避免內存泄露及內存的規範化使用

一、內存分配的方式:

(1)、靜態存儲區分配。內存在程序編譯的時候就已經分配好了,這塊內存在程序的整個運行期間都存在。例如全局變量,static變量;

(2)、在棧上創建。在執行函數時,函數內部局部變量的存儲單元都可以在棧上創建,函數執行結束時這些存儲單元自動被釋放,棧內存分配運算內置於處理器的指令集中,效率很高,但分配的內存有限;

(3)、堆上分配(動態內存分配)。程序在運行的時候用malloc或new申請任意多少的內存,程序員自己負責在何時用free或delete釋放內存。生存期由自己決定,使用非常靈活。


二、常見的內存錯誤:

(1)、內存分配未成功,卻使用了;

(2)、內存分配成功,單位初始化就引用它;

(3)、內存分配成功且已經初始化,但是操作越界;

(4)、忘記釋放內存,造成內存泄露;

(5)、釋放內存了,繼續使用。


三、對策及規則:

(1)、用new或malloc申請內存之後,應立即檢查指針值是否爲NULL,防止指針值爲NULL的內存被使用;

(2)、不要忘記爲數組或者動態內存賦初值,防止將爲被初始化的內存作爲右值使用;

(3)、避免越界,特別當心“多1”或者“少1”操作;

(4)、動態內存的分配和釋放必須配對,防止內存泄露;

(5)、使用free或者delete釋放了內存之後,立即將指針置NULL,防止產生“野指針”。


備註:整理自《高質量C/C++編程》


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