C/C++內存泄漏與出錯分析

2柬批、2018-1-12.?C/C++程序穩(wěn)健性的關鍵之一,內存泄露吝镣。當科研成果要順利的用于產業(yè)界時睬塌,必須要經受住長時間運行程序和算法高頻次調用的考驗泉蝌。自身編寫的程序造成會內存泄露的原因主要有以下幾點:

a、malloc/calloc和free對應, new/new type [] 和delete/delete[]對應揩晴。使用內存的時候勋陪,切記何時釋放。

b硫兰、程序架構龐大诅愚,模塊眾多時,接口設計和使用說明必須明確劫映。以免造成函數內部申請的內存违孝,調用函數后刹前,卻未在外部釋放。

c雌桑、對于結構體指針的內存申請和釋放喇喉,建議編寫特定對應申請和釋放函數,以免和free/delete混淆校坑,同時也便于及時檢測發(fā)現錯誤拣技,起到一定的規(guī)范性。

1耍目、2017-3-26.?從昨天晚上到今天中午膏斤,竟然出現了申請內存都會出現錯誤。Critical error detected c0000374 (錯誤1)和Free Heap block XXXXXX modified at XXXXXX after it was freed(錯誤2)和Unhandled exception制妄,Heap corruption(錯誤3)的錯誤掸绞。經過再三的調試和檢測泵三,整個工程的邏輯和算法沒有錯誤耕捞,于是非常糾結。

在C/C++中malloc/calloc和free相匹配烫幕,new和delete(delete[])相匹配俺抽。通常,內存泄漏的本質原因都是申請了內存而未手動釋放较曼,動態(tài)分配的內存如果沒有釋放磷斧,則該內存區(qū)域會一直占用直到整個程序結束,在實際大型工程中捷犹,是不允許存在的弛饭,否則處理器運行不久就會越來越卡,只能重啟萍歉。

出現錯誤1-3侣颂,都會導致堆內存塊損壞。經過仔細排查枪孩,終于找到癥結所在憔晒。需要注意以下幾點:

a、對于錯誤2蔑舞,錯誤3. 可能的原因是由于申請時就出現了問題拒担,或者申請和釋放的內存不是同一區(qū)域導致,在申請內存時要一定保證類型相同攻询。

struct point2i{

int x,y;

};

//錯誤point2i -->int从撼,這種做法極其容易導致程序出現訪問錯誤

int? ? * buffer_temp = (int*)calloc(length,sizeof(point2i));

free(buffer_temp);//如果中途將指針buffer_temp被修改,會導致釋放錯誤钧栖,地址指針要保護好

b低零、對于錯誤1呆馁,是由于內存被越界處理導致。

例如使用memset時毁兆,指定memset的長度超過了申請的內存長度浙滤,導致處理越界。

int? ? * buffer_temp2 = (int*)calloc(length,sizeof(int));

錯誤:memset(buffer_temp2, 0,sizeof(point2i)*length);//sizeof(point2i)*length
>sizeof(int)*length

錯誤:memset(buffer_temp2, 0,sizeof(int)*(length+n));

總結:申請和釋放內存要對應气堕,類型要注意纺腊;運用memset高速賦值時,注意處理區(qū)域長度茎芭;當出現申請內存出現錯誤時揖膜,很有可能是該內存沒有被申請便被越界使用了,導致申請該片內存時造成沖突梅桩。

驢兒先生筆記壹粟,不斷更新中zzz...

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市宿百,隨后出現的幾起案子趁仙,更是在濱河造成了極大的恐慌,老刑警劉巖垦页,帶你破解...
    沈念sama閱讀 218,755評論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件雀费,死亡現場離奇詭異,居然都是意外死亡痊焊,警方通過查閱死者的電腦和手機盏袄,發(fā)現死者居然都...
    沈念sama閱讀 93,305評論 3 395
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來薄啥,“玉大人辕羽,你說我怎么就攤上這事÷⒕澹” “怎么了刁愿?”我有些...
    開封第一講書人閱讀 165,138評論 0 355
  • 文/不壞的土叔 我叫張陵,是天一觀的道長赘艳。 經常有香客問我酌毡,道長,這世上最難降的妖魔是什么蕾管? 我笑而不...
    開封第一講書人閱讀 58,791評論 1 295
  • 正文 為了忘掉前任枷踏,我火速辦了婚禮,結果婚禮上掰曾,老公的妹妹穿的比我還像新娘旭蠕。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 67,794評論 6 392
  • 文/花漫 我一把揭開白布掏熬。 她就那樣靜靜地躺著佑稠,像睡著了一般。 火紅的嫁衣襯著肌膚如雪旗芬。 梳的紋絲不亂的頭發(fā)上舌胶,一...
    開封第一講書人閱讀 51,631評論 1 305
  • 那天,我揣著相機與錄音疮丛,去河邊找鬼幔嫂。 笑死,一個胖子當著我的面吹牛誊薄,可吹牛的內容都是我干的履恩。 我是一名探鬼主播,決...
    沈念sama閱讀 40,362評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼呢蔫,長吁一口氣:“原來是場噩夢啊……” “哼切心!你這毒婦竟也來了?” 一聲冷哼從身側響起片吊,我...
    開封第一講書人閱讀 39,264評論 0 276
  • 序言:老撾萬榮一對情侶失蹤绽昏,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后定鸟,有當地人在樹林里發(fā)現了一具尸體而涉,經...
    沈念sama閱讀 45,724評論 1 315
  • 正文 獨居荒郊野嶺守林人離奇死亡著瓶,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 37,900評論 3 336
  • 正文 我和宋清朗相戀三年联予,在試婚紗的時候發(fā)現自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片材原。...
    茶點故事閱讀 40,040評論 1 350
  • 序言:一個原本活蹦亂跳的男人離奇死亡沸久,死狀恐怖,靈堂內的尸體忽然破棺而出余蟹,到底是詐尸還是另有隱情卷胯,我是刑警寧澤,帶...
    沈念sama閱讀 35,742評論 5 346
  • 正文 年R本政府宣布威酒,位于F島的核電站窑睁,受9級特大地震影響,放射性物質發(fā)生泄漏葵孤。R本人自食惡果不足惜担钮,卻給世界環(huán)境...
    茶點故事閱讀 41,364評論 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望尤仍。 院中可真熱鬧箫津,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,944評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至田炭,卻和暖如春师抄,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背教硫。 一陣腳步聲響...
    開封第一講書人閱讀 33,060評論 1 270
  • 我被黑心中介騙來泰國打工司澎, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人栋豫。 一個月前我還...
    沈念sama閱讀 48,247評論 3 371
  • 正文 我出身青樓挤安,卻偏偏與公主長得像,于是被迫代替她去往敵國和親丧鸯。 傳聞我的和親對象是個殘疾皇子蛤铜,可洞房花燭夜當晚...
    茶點故事閱讀 44,979評論 2 355

推薦閱讀更多精彩內容