記憶體洩漏調查

2021-09-07 02:42:11 字數 1014 閱讀 1688

記憶體洩漏:

穩定性試驗將引發記憶體洩漏問題,記憶力24從小時內150m羅斯350m

調查在測試機上:

!heap -l

我們發現了大量的28位元組。18db看一下洩漏內容

大量的記憶體位址指向swmanager\0 這個字串,**中搜尋swmanager」 發現有10幾處使用裸的字串。

諮詢相應的研發rd發現當中關於tips邏輯引用最頻繁:

該處為在建構函式內的引用,懷疑物件釋放有問題。排查物件的相關構造析構函式並斷點:

1 e 5f692850 0001 (0001) 0:** bdswmanagerview!tipswndworkingdata::tipswndworkingdata

2 e 5f67d4c0 0001 (0001) 0:** bdswmanagerview!tipswndworkingdata::tipswndworkingdata

3 e 5f632a80 0001 (0001) 0:** bdswmanagerview!tipswndworkingdata::~tipswndworkingdata

4 e 5f632b00 0001 (0001) 0:** bdswmanagerview!tipswndworkingdata::`scalar deleting destructor』

一處建構函式,一處拷貝建構函式。一處析構函式。一處虛析構函式。

執行相應邏輯:

1號斷點命中1次。2號斷點命中2次,3好命中2次4號命中1次。

能夠確認,析構函式少呼叫了一次。

排查**後發現,物件被強轉為void*。再delete導致無法正確析構。

void tipswndhandler::handlemsg(int

const messagecategorycode, const

void* const precvdata)

delete precvdata ;

delete data ;

}

記憶體洩漏和記憶體溢位 記憶體洩漏和記憶體溢位

記憶體洩漏 是指申請的記憶體空間使用完畢之後未 一次記憶體洩露危害可以忽略,但若一直洩漏,無論有多少記憶體,遲早都會被占用光,最終導致程式crash。因此,開發中我們要盡量避免記憶體洩漏的出現 記憶體溢位 是指程式在申請記憶體時,沒有足夠的記憶體空間供其使用。通俗理解就是記憶體不夠用了,通常在執行大...

wxWidgets delete記憶體洩漏

定義乙個結構typedef tag struct customnode struct,再定義乙個wxarrayptrvoid m nodearray 在程式的初始化過程裡 for wxint32 i 0 i 5 i node struct ptemp new node struct ptemp a ...

PHP記憶體洩漏

如果php物件存在遞迴引用,就會出現記憶體洩漏。這個bug在php裡已經存在很久很久了,先讓我們來重現這個bug,如下 class foo class bar for i 0 i 100 i 執行以上 你會發現,記憶體使用量本應該不變才對,可實際上卻是不斷增加,unset沒有完全生效。現在的開發很多...