首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >从调试器分析CreateErrorInfo的内存泄漏?

从调试器分析CreateErrorInfo的内存泄漏?
EN

Stack Overflow用户
提问于 2014-04-22 06:47:28
回答 2查看 245关注 0票数 0

我正在分析由调试器创建的内存转储。它显示了导致内存泄漏的CreateErrorinfo方法调用,如下所示,

我对mydll和mydll都使用了适当的地图文件。CreateErrorInfo的含义是什么?怎么会导致内存泄漏?

函数源目的地mfc90u!运算符new+33

mfc90u!CPlex::Create+1f mfc90u!接线员新kernel32!TlsSetValueStub

kernel32!TlsSetValueStub

MYANOTHERDLL!CreateErrorInfo+188e2

MYDLL!MyClas::OnTimer+a3 ......\myfile.cpp @ 4639

MYDLL!CMainFrame::OnTimer+71 ......\mainfrm.cpp @ 1246

mfc90u!CWnd::OnWndMsg+407

mfc90u!AfxCallWndProc+a3

user32!MDIClientWndProcW

mfc90u!__sse2_available_init+657b

mfc90u!CWnd::WindowProc+24

mfc90u!AfxCallWndProc+a3

mfc90u!AfxWndProc+37 mfc90u!AfxCallWndProc mfc90u!AfxWndProcBase+56 mfc90u!AfxWndProc mfc90u!AfxWndProcBase

EN

Stack Overflow用户

发布于 2015-10-27 09:04:51

这与不发布接口有关吗?来自CreatorErroInfo的接口必须由客户端释放:

代码语言:javascript
运行
复制
ICreateErrorInfo* pErrorInfo = nullptr;
HRESULT hr = ::CreateErrorInfo(&pErrorInfo);

if (pErrorInfo)
{
   pErrorInfo->Release();
}

更好的方法是使用ATL的智能指针:

代码语言:javascript
运行
复制
CComPtr<ICreateErrorInfo> ptrErrorInfo;
HRESULT hr = ::CreateErrorInfo(&ptrErrorInfo);

if (ptrErrorInfo)
{
   //no release necessary
}
票数 2
EN
查看全部 2 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23212380

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档