記憶體四區 代碼區:存放函數體第二進位代碼,由操作戲臺進行管理 數據區:存放全局變數和靜態變數以及常量 棧區:由編譯器自動分配釋放,存放函數的參數值,局部變數等 堆區:由程式員分配和釋放,若程式員不是放,程式結束時由操作系統回收 代碼區:存放函數體第二進位代碼,由操作戲臺進行管理 數據區:存放全局變數 ...
-
代碼區:存放函數體第二進位代碼,由操作戲臺進行管理
-
數據區:存放全局變數和靜態變數以及常量
-
棧區:由編譯器自動分配釋放,存放函數的參數值,局部變數等
-
堆區:由程式員分配和釋放,若程式員不是放,程式結束時由操作系統回收
意義:
-
不同區域存放不同第數據,生命周期不同
1.代碼區:
-
-
存放CPU執行第機器指令
-
代碼區是共用的,共用的目的是對於頻繁被執行的程式,只需要在記憶體中有一份代碼
-
代碼區是只讀的,這是為了防止程式意外修改了代碼區內的內容
2.數據區:
-
程式編譯完成後,生成可執行文件後,未執行程式前分配
-
數據區分為全局區(靜態區)、常量區
-
全局區
-
存放全局變數和靜態變數
-
-
常量區
-
存放字元串常量、const修飾第全局變數(全局常量)
-
3.棧區:
-
局部變數在函數結束時自動釋放,在函數內返回局部變數地址會出錯
-
存放局部變數、函數形參
4.堆區:
-
在C++內用關鍵字new在堆區開闢空間,C語言用malloc
-
int *p = new int (123); // p指針屬於局部變數,存放在棧區,*p指向第地址由於是使用new開闢,存放在堆區
-
堆區開闢第數據,需要使用操作符delete