C++學習體會:記憶體管理

91program發表於2008-01-20

1.記憶體分配的三種方式

  (1)從靜態儲存區域分配。記憶體在程式編譯的時候就已經分配好,這塊記憶體在程式的整個執行期間都存在。例如全域性變數,static變數。

  (2)在棧上建立。在執行函式時,函式內區域性變數的儲存單元都可以在棧上建立,函式執行結束時這些儲存單元自動被釋放。棧記憶體分配運算內建於處理器的指令集中,效率很高,但是分配的記憶體容量有限。

  (3) 從堆上分配,亦稱動態記憶體分配。程式在執行的時候用malloc或new申請任意多少的記憶體,程式設計師自己負責在何時用free或delete釋放記憶體。動態記憶體的生存期由我們決定,使用非常靈活,但問題也最多。

2.使用原則

(1)用malloc或new來申請記憶體,應該用if(p==NULL) 或if(p!=NULL)進行防錯處理。

(2)無論用何種方式建立陣列,都要賦初值

(3)動態記憶體的申請與釋放必須配對,程式中malloc與free的使用次數一定要相同(new/delete同理)。

(4)free或delete釋放了記憶體後,將指標設定為NULL。避免產生“野指標”

(5)自己使用的記憶體最好還是自己申請和釋放。

 

相關文章