我得到了問題,我的應用程序有一個無限的增長內存泄漏,這是沒有檢測到。我做的很簡單,就是創建一個對象,在其上運行一個方法,然後刪除該對象。每次我這樣做時,TaskManager中的內存使用量都會增長大約50-100MB。這在一些運行後耗盡了我的整個記憶。我通過多線程來做到這一點,但是沒有靜態變量,所以我的線程中的不同對象之間沒有衝突。它們只使用其他對象的靜態方法,不會修改任何其他內存,而不會修改參數中的內存 - 所以它是線程安全的。 我試圖找出原因:內存泄漏沒有檢測到CRT內存泄漏檢測
- 使用crtdbg.h(CRT-Memeory氣密性檢測),但也有隻因爲我的應用程序的啓動而存在泄漏 - 他們會在關機時被刪除他們並不那麼大。
- 我一直在尋找,我繼承的所有對象的虛析構函數,但它們都可以
還有什麼我可以嘗試找出我的應用程序泄漏?我在HEAP中找不到任何泄漏,除了可能導致STACK泄漏的析構函數問題之外,我不知道任何其他原因(通過這個,我的意思是一個對象不會銷燬一個本地的std :: string對象已經在堆中分配空間)。我不知道「STACK-Leaks」是否還有其他原因,但我知道在我的方法中,內存增長最多的部分,沒有HEAP分配。
讓我們看看創建對象的代碼以及對象或指向對象的指針 – Mark 2012-07-17 14:42:52
Obejct非常大,所以我不能發佈整個代碼 - 它是通過new進行分配的,並且使用delete進行了釋放 - 您做了什麼?想要看到確切的 - 每個新的有一個刪除,每個新的[]有一個刪除[] ... – DenisD 2012-07-17 14:53:14
如果你只這麼做,爲什麼不創建堆棧上的對象 - 所以不需要新的和刪除 – Mark 2012-07-17 14:56:19