簡體   English   中英

程序似乎泄漏內存,但未檢測到內存泄漏

[英]Program appears to leak memory, but no memory leak detected

我正在開發一個當前存在少量內存泄漏的程序,我設法通過編寫一個名為Memory的類,將其作為我所有其他類的基類並入到其中,並編寫分配和解除分配函數的方法來解決這些問題。 Memory類。 每次分配或取消分配內存時,詳細信息(包括進行調用的類和函數)都將記錄到向量中。 這使我能夠編寫算法來分析結果,並指出程序中任何內存泄漏的方向。

我終於到了分析沒有發現程序泄漏的地步(所有記錄的分配都具有匹配的取消分配)。 但是,當我禁用帶有預處理器宏的“ Memory功能(以確保矢量沒有耗盡內存)時,我仍然可以找到似乎是內存泄漏的東西。 我這樣做是通過循環運行測試功能,並同時觀察任務管理器來進行的:盡管“內存管理”向量不起作用,內存使用量仍在穩定增加,並且活動時測試未返回任何結果。

通過在整個解決方案范圍內進行搜索,我確保除了在內存管理功能中之外,從未使用過關鍵字new 停用調試時,所有這些功能就是分配一塊新的內存並返回地址,就像我直接使用new關鍵字一樣。

我真的只是想知道是否存在某種C ++異常可能導致程序消耗內存,或者僅僅是由於我的調試算法中的一個問題導致漏了泄漏。 如果需要,我可以發布代碼; 這有點漫長而乏味,但是我可以嘗試以較小的規模重新創建問題-請讓我知道!

在此先感謝您的任何建議,我知道沒有多少從沒有代碼的工作-我只是在尋找任何一種語言中的怪癖,可能會造成這一點,沒有那么多地方泄漏發生在我的代碼。 同樣,如有必要,我很樂意發布代碼。

還有其他泄漏內存的方法,例如GDI不對自己分配的資源調用DeleteObject。

如果在Windows上使用Visual Studio,則可以使用CRT的內置內存泄漏檢測功能: https : //msdn.microsoft.com/zh-cn/library/x98tx3cf.aspx

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM