【发布时间】:2013-05-28 10:12:21
【问题描述】:
在我的 MFC 应用程序中,当我在 Visual Studio 的调试模式下关闭它时,输出窗口有这样的行-
f:\dd\vctools\vc7libs\ship\atlmfc\src\mfc\strcore.cpp(156) : {415} normal block at 0x028BC410, 21 bytes long. Data: <T x > 54 CD FB 78 04 00 00 00 04 00 00 00 01 00 00 00 "
当我使用分配号创建断点时,它指向代码:
if (CMFCToolBar::GetUserImages() == NULL)
{
if (m_UserImages.Load(_T(".\\UserImages.bmp"))) //call-stack points to this line.
{
CMFCToolBar::SetUserImages(&m_UserImages);
}
}
另一个示例如下:
CMainFrame::CMainFrame()
{
theApp.m_nAppLook = theApp.GetInt(_T("ApplicationLook"), ID_VIEW_APPLOOK_VS_2008);//call-stack points to this line.
}
我发现所有其他分配数字都指向将字符串作为参数直接传递给函数的行。我的问题是:这真的是内存泄漏吗?如果是,那么如何避免这种情况;也许初始化一个 CString 变量并将其作为该函数的参数传递?
【问题讨论】:
-
可以分享有问题的地方的代码吗?
-
它在 Load 函数内部泄漏?
-
一些问题代码: 1> theApp.m_nAppLook = theApp.GetInt(_T("ApplicationLook"), ID_VIEW_APPLOOK_VS_2008); 2> m_UserImages.Load(_T(".\\UserImages.bmp")); @billz:我不确定是否是内存泄漏。分配编号上的断点指向此代码。
-
请在您的问题中更新您的代码:)
-
据我所知没有
CWinApp::GetInt。您能否向我们展示 that 函数的实现? “分配编号上的断点”是什么意思?
标签: c++ memory-leaks mfc