1. 程式人生 > >c++動態內存與智能指針

c++動態內存與智能指針

under 動態對象 存儲 顯式 運算符 智能 成員 對象類型 自動

目前為止我們學過靜態內存和棧內存,分配在其中的對象由編譯器自動創建和銷毀,

靜態內存:用來保存局部static對象、類的static數據成員、以及定義在任何函數體之外的變量。在對象使用之前分配,程序結束時銷毀。

棧內存:用來保存定義在函數內的非static對象。僅在對象定義的程序塊運行時存在,程序塊運行結束時銷毀。

除此之外,每個程序還擁有一個內存池,這部分內存被稱為自由空間程序用堆來存儲動態分配的對象——程序運行時分配的對象。動態對象不再使用時,需要顯式的銷毀它們。程序使用動態內存出於以下三種原因之一:

  • 程序不知道自己需要使用多少對象(比如容器類)。
  • 程序不知道所需對象的準確類型。
  • 程序需要在對各對象間共享數據。

1、new和delete

c++中動態內存的管理是通過一對運算符new和delete完成的:new為對象分配內存並返回指向該對象類型的指針,delete接受一個動態對象的指針,銷毀指向的對象並釋放其內存。

1.1、new

c++動態內存與智能指針