2011-06-12 35 views
3

任何人都可以推薦一個高質量的C++內存調試API或Windows軟件(特別是與MinGW一起工作的)嗎?我幾乎肯定了我的程序中有內存泄漏,但我不知道從哪裏開始尋找。C++內存調試器?

另外,在一個相關的說明中,我以前嘗試重載全局的new和delete操作符,並從那裏存儲調試信息。然而,當我嘗試用我的重載操作符替換每一個新的事件時,它會拋出一堆錯誤。我只嘗試使用一個簡單的預處理宏來做到這一點。

#define new new(__FILE__, __LINE__) 

圍繞這個問題有沒有獨特的解決方法?

編輯:我可能應該更清楚這一點。事實上我確實聲明瞭一個重載,並且沒有任何錯誤地實現它。唯一的問題是,當我嘗試使用宏替換所有使用新運算符來使用我的重載時,這就是爲什麼我只發佈宏代碼。

+1

當然你的宏會引發錯誤。 [操作員新](http://www.cplusplus.com/reference/std/new/operator%20new/)沒有重載,它接受這些參數。定義一個宏不只是爲你創建一個適用的函數。 – 2011-06-12 01:20:28

+0

我不想聽起來居高臨下,但宏開闢了一個愚蠢的錯誤的方式:是你的'新'定義*之前*宏出現?爲什麼不完全忽略它,並定義全局'new'(沒有參數的那個),進行日誌記錄並從例如'operator new'? – 2011-06-12 01:21:31

+0

@Luc,不。我確保在宏之前添加我的超載聲明。儘管如此,我可能會嘗試將正常的全球超載。 – B3tturTh3nU 2011-06-12 01:28:09

回答

3

對於Windows中的內存泄漏,我發現啓用了usermode堆棧跟蹤的UMDH非常有用。 Here's a tutorial

有關其他工具的列表,請看here

+0

這似乎是我正在尋找,謝謝。希望它能幫助我發現泄漏的來源。 – B3tturTh3nU 2011-06-12 01:50:19