1. 程式人生 > >C和C++記憶體分割槽

C和C++記憶體分割槽

在C和C++編譯的程式大致可以分為五個區:

1.堆區:由程式設計師自己分配和釋放,如果程式設計師一直沒有釋放這部分記憶體,那麼程式結束的時候會由OS回收。這裡開闢空間一般是new,malloc等函式。要注意的是,像我們malloc開闢一片空間出來,同時也向裡面賦值了,但是程式執行的過程我們去把這一片空間釋放了,只是這一片空間被設定為可以再次被使用,裡面的內容不一定會被清空為0.

2.棧區:一般由編譯器自己去分配和釋放,存放像區域性變數,函式名等等。

3.全域性/靜態儲存區:在程式編譯階段就開闢空間和初始化好,生命週期是整個程式執行的週期。主要存放全域性變數(會自動初始化),靜態變數等等。

4.字元常量區:存放字元常量,程式結束的時候釋放。

5.程式碼區:存放函式的二進位制程式碼。

 

如有錯誤,望指正。