二級指標和記憶體四區的模型

2022-08-31 00:03:21 字數 843 閱讀 9521

看了一下前面寫的關於指標見解,以及關於記憶體四區的見解,然後感覺寫的不是特別清楚,然後自己就畫了一張圖來表示他們之間的關係,我想如果能看懂我這張圖,記憶體四區以及二級指標差不多就明白了;下面先上**:

1

#define _crt_secure_no_warnings

2 #include 3 #include

4 #include 5

6void

main()7;

1112

//二維陣列

13char b[3][4] = ;

1415

//二級指標:手工的分配記憶體空間

16char **c = (char **)malloc(sizeof(char *) * 3

);17

18for(i = 0 ; i < 3; i++)

1923

24 system("

pause");

25 }

第一種是指標陣列,即陣列裡儲存的是乙個個指標,這些指標全都指向了全域性區,第二種是分配在棧區的二維陣列,第三種是手工分配的記憶體空間;下面是關於這段**的圖;

假設在全域性區中aaa的位址是0xa11,bbb的位址是0xa12,cccc的位址是0xa13,則指標陣列a裡面的指標則分別指向了0xa11,0xa12,0xa13這三個位址,二維陣列則直接是在棧區分配的空間,所以可以直接把資料存入到棧區中,而第三種則是先為二級指標在堆區分配了三個一級指標,然後又在棧區分配了3個4個位元組的空間,又將堆區的三個指標分別指向了它們。

程式的記憶體四區 二級指標 條件編譯

記憶體的四區模型 ps 常量區在全域性區中 棧區和堆區 include include include 堆 char getmem int num return p1 棧 注意 return不是把記憶體塊 64個位元組,給return出來 而是把記憶體塊的首位址 比如記憶體的編號0xaa11 返回給...

記憶體四區模型

記憶體可以先粗略的分為四個區,分別是 區,資料區,棧區和堆區。其中,資料區可以分為全域性區 靜態區 常量區。資料區內容的生命週期從程式開始到程式終止 棧區的內容從函式左括號開始,到右括號為止,函式結束後,記憶體自動釋放 堆區的內容由程式設計師自己開闢,手動釋放。區 程式指令 資料區 全域性區 靜態區...

程式的記憶體模型 記憶體四區

在程式編譯後,生成了exe可執行程式,未執行該程式前分為兩個區域 區和全域性區 區 存放函式體的二進位制 由作業系統進行管理 存放cpu執行的機器指令。區是共享的,共享的目的是對於頻繁被執行的程式,只需要在記憶體中有乙份 即可。區是唯讀的,使其唯讀的原因是防止程式意外地修改了它的指令 全域性區 存放...