我使用Visual 2017年寫一個MFC應用程序應用程序退出時在調試模式下,我得到這個:檢測內存泄漏
檢測內存泄漏!轉儲對象 - > {74}正常塊在 0x00000230E49A7000,長度爲16個字節。數據:< 0 0> 30 00 97 E4 30 02 00 00 00 00 00 00 00 00 00對象轉儲完成。
因此,爲了知道哪些功能是造成泄漏,我已在stdafx.h中這些行:
#define _CRTDBG_MAP_ALLOC
#include <stdlib.h>
#include <crtdbg.h>
而且這些線路中的CWinApp :: InitInstance中():
_CrtSetDbgFlag(_CRTDBG_ALLOC_MEM_DF | _CRTDBG_LEAK_CHECK_DF);
_CrtSetBreakAlloc(74);
雖然它沒有工作。我懷疑第74個內存分配號碼是在我的代碼執行之前完成的。我可以重載哪種方法以確保首先被調用?
它總是74嗎? – drescherjm
是的,它總是74.我發現內存泄漏發生在我導入到我的項目中的非MFC代碼中。雖然,我猜_CrtSetDbgFlag不會在此代碼執行之前調用。 –
我將這些行放在外部代碼主類的構造函數中,並且調試器在堆棧(而不是堆)上分配std :: vector時停止。很奇怪...... –