溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

避免內(nèi)存泄露及內(nèi)存的規(guī)范化使用

發(fā)布時間:2020-07-03 08:27:22 來源:網(wǎng)絡 閱讀:430 作者:小格林 欄目:編程語言

一、內(nèi)存分配的方式:

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

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

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


二、常見的內(nèi)存錯誤:

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

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

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

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

(5)、釋放內(nèi)存了,繼續(xù)使用。


三、對策及規(guī)則:

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

(2)、不要忘記為數(shù)組或者動態(tài)內(nèi)存賦初值,防止將為被初始化的內(nèi)存作為右值使用;

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

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

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


備注:整理自《高質(zhì)量C/C++編程》


向AI問一下細節(jié)

免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI