【发布时间】:2010-11-17 13:32:05
【问题描述】:
我正在开发一个 MFC Visual C++ 项目。据我从MSDN 了解到,当内存泄漏时,_CrtDumpMemoryLeaks() 应该返回TRUE。
在注意到它是 TRUE 后,我试图在代码中找到它变为TRUE 的第一个点。显然,它从一开始就是正确的。如果我点击 F10(step-over)开始调试程序,并在监视窗口中输入_CrtDumpMemoryLeaks(),它甚至在程序入口点的第一行代码之前显示 TRUE:
extern "C" int WINAPI _tWinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance,
_In_ LPTSTR lpCmdLine, int nCmdShow)
#pragma warning(suppress: 4985)
{
// call shared/exported WinMain
return AfxWinMain(hInstance, hPrevInstance, lpCmdLine, nCmdShow);
}
另外,我推测调试工具可能没有在那个时候初始化并且 TRUE 是错误的。所以我在OnInitDialog()函数的第一行设置了一个断点,那里的值也是TRUE。
为什么我在程序的早期就出现了内存泄漏?
【问题讨论】:
标签: visual-c++ mfc memory-leaks