C C 記憶體知識 一

2021-06-18 03:34:29 字數 460 閱讀 8554

乙個由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 而不...