乙個由c/c++編譯的程式占用的記憶體分為以下幾個部分
二、例子程式
這是乙個前輩寫的,非常詳細
int a = 0; 全域性初始化區
char *p1; 全域性未初始化區
main()
int b; 棧
char s = "abc"; 棧
char *p2; 棧
char *p3 = "123456"; 123456\0在常量區,p3在棧上。
static int c =0; 全域性(靜態)初始化區
p1 = (char *)malloc(10);
p2 = (char *)malloc(20);
分配得來的10和20位元組的區域就在堆區。
strcpy(p1, "123456"); 123456\0放在常量區,編譯器可能會將它與p3所指向的"123456"優化成乙個地方。
C C 記憶體知識 一
乙個由c c 編譯的程式占用的記憶體分為以下幾個部分 二 例子程式 這是乙個前輩寫的,非常詳細 int a 0 全域性初始化區 char p1 全域性未初始化區 main int b 棧 char s abc 棧 char p2 棧 char p3 123456 123456 0在常量區,p3在棧上...
C C 記憶體知識 四
c c 記憶體知識 四 有了malloc free 為什麼還要 new delete malloc 與free 是c c 語言的標準庫函式,new delete 是c 的運算子。它們都可用於申請動態記憶體和釋放記憶體。對於非內部資料型別的物件而言,光用maloc free 無法滿足動態物件的要求 物...
C C 記憶體知識 二
c c 記憶體知識 二 計算記憶體容量 用運算子sizeof 可以計算出陣列的容量 位元組數 int a 3 sizeof a 的值是12 注意別忘了 0 p是指標,指向a,但是sizeof p 的值卻是4。這是因為sizeof p 得到的是乙個指標變數的位元組數,相當於sizeof char 而不...