內存分配機制

 C/C++中內存分爲如下五個部分:程序員

1.棧區: 存放函數的參數值,局部變量等。由編譯器自動分配釋放,大小固定,通常爲2M或者1Mide

2.堆區:使用malloc或者new出來的對象存放的區域,能夠由程序員本身申請和釋放。函數

3.全局區(靜態區):存放全局變量和靜態變量。初始化的全局變量和靜態變量在一塊區域,未初始化的全局變量和靜態變量在相鄰的另外一塊區域。spa

4.常量區:常量字符串等對象

5.代碼區:存放函數體的二進制代碼
 內存

 

其中棧和堆的區別:字符串

1.申請方式:編譯器

堆由程序員本身申請釋放;it

棧由編譯器自動分配。編譯

2.申請大小:

堆向高地址擴展,是不連續的內存區域,大小受限於計算機系統中有效的虛擬內存。空間比較靈活也比較大。

棧的容量和棧頂地址由系統預先規定好的,向低地址擴展,大小爲2M或者1M,可用空間較小。

3.申請效率

棧速度較快。

堆分配通常較慢,且容易產生碎片。

相關文章
相關標籤/搜索