2010-11-18 73 views
2

_CrtDumpMemoryLeaks();如果您不知道,是一種轉儲程序中所有內存泄漏的函數。我目前顯示,我有一個3632062字節內存泄漏(它沒有被釋放)。當分配了一定數量的字節時突然崩潰

我想知道: 有沒有什麼辦法可以導致Visual C++ Express在分配一定數量的字節時中斷?這樣我就可以在分配3632062字節時中斷,然後讀取堆棧跟蹤以查看我分配的位置。

這是目前我能想到的唯一方法,用於查找內存分配的位置,以便我可以修復它。我一直在尋找我的代碼很多,但我找不到我需要分配3632062字節的地方(因爲我加載的唯一文件是2767136字節..),儘管我確信泄漏與文件I'米操作。

找到內存泄漏源的任何想法?我正在使用本地C++,Visual C++ 2010

回答

3

您可以使用_CrtSetAllocHook來執行此操作來跟蹤總內存使用情況。

UMDH會給你所有堆中分配塊的列表。這可能是你想要的,因爲在達到給定的總分配閾值時不會告訴你所有塊的分配位置。

+0

哇,這對我所需要的是完美的。非常感謝! – Brad 2010-11-18 20:15:50

+0

我主要用它來進行泄漏跟蹤(比較連續的快照),但它也適用於歸因。確保您的所有符號都正確無誤。 – 2010-11-18 20:38:35