C++學習體會:記憶體管理
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)自己使用的記憶體最好還是自己申請和釋放。
相關文章
- Spark學習——記憶體管理Spark記憶體
- C++記憶體管理C++記憶體
- C++記憶體管理剖析C++記憶體
- JVM學習-自動記憶體管理JVM記憶體
- 轉載——C++記憶體管理C++記憶體
- JVM學習筆記——自動記憶體管理JVM筆記記憶體
- Objective C 記憶體管理(上)學習筆記Object記憶體筆記
- 記憶體管理 記憶體管理概述記憶體
- C++記憶體管理:簡易記憶體池的實現C++記憶體
- 記憶體管理篇——實體記憶體的管理記憶體
- XV6學習筆記(2) :記憶體管理筆記記憶體
- 作業系統——記憶體管理學習筆記作業系統記憶體筆記
- Object C學習筆記4-記憶體管理Object筆記記憶體
- 自動共享記憶體管理 自動記憶體管理 手工記憶體管理記憶體
- 深度學習 Caffe 記憶體管理機制理解深度學習記憶體
- Android學習之 記憶體管理機制與應用記憶體優化Android記憶體優化
- 記憶體管理兩部曲之實體記憶體管理記憶體
- C++動態記憶體管理——new/deleteC++記憶體delete
- C++記憶體管理:new / delete 和 cookieC++記憶體deleteCookie
- 記憶體分配策略學習記憶體
- Linux 記憶體管理知識學習總結Linux記憶體
- object-c 記憶體管理機制的學習Object記憶體
- Go:記憶體管理與記憶體清理Go記憶體
- Java的記憶體 -JVM 記憶體管理Java記憶體JVM
- 記憶體管理記憶體
- Aerospike的bin記憶體管理--即列記憶體管理ROS記憶體
- [C++]記憶體分配C++記憶體
- C/C++實戰之記憶體管理 (轉)C++記憶體
- 侯捷C++手把手教學:堆、棧與記憶體管理C++記憶體
- Linux 記憶體管理:記憶體對映Linux記憶體
- Java記憶體區域學習Java記憶體
- 學習Java:記憶體洩露Java記憶體洩露
- iOS底層學習 - 記憶體管理之weak原理探究iOS記憶體
- 記憶體管理兩部曲之虛擬記憶體管理記憶體
- 【記憶體管理】Oracle AMM自動記憶體管理詳解記憶體Oracle
- 記憶體管理-swMemoryGlobal記憶體
- OC記憶體管理記憶體
- iOS 記憶體管理iOS記憶體