內存分配機制

 C/C++中內存分爲以下五個部分:

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

2.堆區:使用malloc或者new出來的對象存放的區域,可以由程序員自己申請和釋放。

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

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

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

 

其中棧和堆的區別:

1.申請方式:

堆由程序員自己申請釋放;

棧由編譯器自動分配。

2.申請大小:

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

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

3.申請效率

棧速度較快。

堆分配一般較慢,且容易產生碎片。

 

 

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