1. 程式人生 > >動態內存&對象

動態內存&對象

amp 情況下 必須 對象 類型 部分 有一個 16px 運行

一、對象的生存期

  對於 static 對象和自動對象,它們都有著嚴格定義的生存期。

  • 全局對象:在程序啟動時分配,在程序結束時銷毀。
  • 局部自動對象:在對象定義語句時分配,在離開塊時銷毀
  • 局部 static 對象:在對象定義語句時分配,在程序結束時銷毀

  對於動態分配對象,其生存期與它們在哪裏創建是無關的,只有當顯式地被釋放時,這些對象才會銷毀。

二、對象的位置

1. 靜態內存

  保存:局部 static 對象、類 static 數據成員、全局變量

2. 棧內存

  保存:局部自動對象

3. 自由空間(堆)

  存儲:動態分配的對象

4. 備註

  每個程序除了有靜態內存和棧內存,還擁有一個內存池,這部分內存

被稱作自由空間或堆

  程序用堆來存儲那些在程序運行時分配的對象,即動態分配的對象

三、動態內存的管理

1. 動態對象的生存期由程序來控制,即當動態對象不再使用時,我們的代碼必須顯式銷毀它們

2. 內存泄漏:忘記釋放內存

3. 產生引用非法內存的指針:在尚有指針引用內存的情況下而釋放內存

4. 智能指針類型:目的是管理動態分配的對象(當一個對象應該被釋放時,指向它的智能指針可以確保自動地釋放它)

動態內存&對象