變數的記憶體一般分為5部分
棧區stack:由編譯器自動分配釋放,,存放函式的引數值,區域性變數等,對棧的操作方式類似於資料結構中的棧
堆區heap :一般由程式設計師分配釋放,如果程式設計師不釋放,程式結束時可能由os揮手,但是它與資料結構中的堆是兩回事,分配方式類似於鍊錶。
全域性區(靜態區)satic: 全域性變數和靜態變數的儲存是放在一塊的。初始化的全域性變數和靜態變數放在一塊區域,未初始化的全域性變數和靜態變數又放在相鄰的另外一塊區域中。程式結束後由系統釋放
文字常量區:常量字串放在這裡,程式結束後由系統釋放
程式**取:存放函式體的二進位制**
example:
int a = 0; 全域性初始化區
char *p1; 全域性未初始化區
main()
C C 中變數的儲存位置
1 首先,講下 堆 heap 和 棧 stack 的區別 乙個由 c c 編譯過的程式占用的記憶體分為一下幾個部分 1 棧區 stack 由編譯器自動分配釋放,存放函式的引數值,區域性變數的值等。這個棧的操作方式類似於資料結構中的棧。2 堆區 heap 一般由程式設計師分配釋放,若程式設計師不釋放,...
變數儲存位置
1 首先,講下 堆 heap 和 棧 stack 的區別 乙個由 c c 編譯過的程式占用的記憶體分為一下幾個部分 1 棧區 stack 由編譯器自動分配釋放,存放區域性變數 2 堆區 heap 一般由程式設計師分配釋放,若程式設計師不釋放,程式結束時可能由os 注意它與資料結構中的堆是兩回事,分配...
c c 變數儲存
1 靜態儲存區,是在程式編譯時就已經分配好的,在整個執行期間都存在,如全域性變數 常量。2 棧上分配,函式內的區域性變數就是從這分配的,但分配的記憶體容易有限。3 堆上分配,也稱動態分配,如我們用new,malloc分配記憶體,用delete,free來釋放的記憶體。static全域性變數與普通的全...