【C++ 1】內存分區模型

目錄

內存分區模型

1.1程序運行前

1.2程序運行後

內存分區模型

代碼區:存放函數體的二進制代碼,由操作系統管理;

全局區:存放全局變量和靜態變量,以及常量;

棧區:由編譯器自動分配釋放,存放函數的參數值,局部變量等;

堆區:由程序員分配和釋放,若程序員不釋放,程序結束由操作系統釋放;

不同區域存放的數據,賦予不同的時間週期,給我們更大的靈活編程。

1.1程序運行前

在程序編譯後,生成exe可執行文件,未執行程序部分可以分爲兩個區域:

代碼區:存放CPU執行的機器指令,代碼區是共享和只讀的;

全局區:存放全局變量、靜態變量以及常量區(字符串常量和const修飾的全局常量);該區域的數據在程序結束後由操作系統釋放。

局部變量、const修飾的局部變量(局部常量) 不在全局區中。

1.2程序運行後

棧區:由編譯器自動分配釋放,存放函數的參數值,局部變量等;

注意事項:不要返回局部變量的地址,棧區開闢的數據由編譯器自動釋放;

堆區:由程序員分配和釋放,在C++中利用new開闢內存;

語法:new 數據類型;

利用new創建的數據,會返回該數據對應的類型的指針;使用delete進行釋放;

int *p = new int(10);釋放數據 delete p;

int * arr = new int[10];創建數據; 釋放數組 delete [] arr;

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章