怎样判断是否存在遗漏Release()引起的内存泄露? debug状态下执行一遍,看output栏dump输出就知道了。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 没这么简单,又不是mfc下看new delete引起的泄漏 一般情况下,如果使用了AddRef,但没有调用Release的情况下,MFC的DEBUG环境下是会通过DUMP输出内存泄漏的,而且这种内存泄漏BouncChecker是检查不出来的。如果在输出框中没有报的话,基本上是没有内存泄漏的。 只要是VC的开发编译环境,都可以在DEBUG OUTPUT WINDOW观察内存泄漏等,与是否用MFC无关 那看一下这个贴子:教材上说 _Module.Init了就要_Module.Term();的;MCSD实验程序上也_Module.Term();了,我的程序也_Module.Term();,但结果都有内存泄漏!!!MSDN上的例子只有_Module.Init,没有_Module.Term();,我试了擦去_Module.Term();,结果都正常,到底是什么道理??????谢谢各位指教 下面是一位朋友的回答:有什么联系吗?2)以下是CComModule::Term()源程序,其中在定义了_ATL_DEBUG_INTERFACES时要调用DumpLeakedThunks()输出Leak信息.所以你不调用_Module.Term()自然不会输出内存泄漏信息,但实际上你的程序中应该存在内存泄漏!! CComModule::Term() {#ifdef _ATL_DEBUG_INTERFACES m_bDestroyHeap = false; // prevent heap from going away AtlModuleTerm(this); DumpLeakedThunks(); delete m_paThunks;#ifndef _ATL_NO_MP_HEAP if (m_phHeaps != NULL) { for (DWORD i = 0; i <= m_dwHeaps; i++) HeapDestroy(m_phHeaps[i]); }#endif if (m_hHeap != NULL) HeapDestroy(m_hHeap);#else AtlModuleTerm(this);#endif // _ATL_DEBUG_INTERFACES } using numega boundchecker.driverdevelop.com有down MCSD教材关于出接口的例子报Detected memory leaks!Dumping objects ->{40} normal block at 0x007700A0, 32 bytes long. Data: <x A i > 78 84 41 00 01 00 00 00 04 CD CD CD C4 69 97 81 oleinit.cpp(86) : {31} client block at 0x00770440, subtype 0, 68 bytes long.a CCmdTarget object at $00770440, 68 bytes longObject dump complete.这算不算正常,到底是什么道理? 关于原始套接字,混杂模式 vc++2008下用哪种方法实现串行通信? 【很急切】CPoint的点如何进行偏移 如何在菜单栏的消息处理函数中添加鼠标事件? atl中createwindow创建了一个动态listbox,添加项的问题 如何得到listbxo的索引值 大家看下这是怎么回事啊? 别人用PhotoShop做好的BMP位图,我在VC中作为资源载入的时候,为什么说错误,点确定之后,位图变色了 字符串 转换 表达式 100分求VC如何把数据发送给ASP,并接受ASP的处理结果~ 100分送上!!!!CScrollView的缺陷!!! 我想问问matlab+vc的问题应该在哪里讨论呢?
MCSD实验程序上也_Module.Term();了,我的程序也_Module.Term();,但结果都有内存泄漏!!!
MSDN上的例子只有_Module.Init,没有_Module.Term();,我试了擦去_Module.Term();,结果都正常,
到底是什么道理??????
谢谢各位指教
下面是一位朋友的回答:有什么联系吗?2)以下是CComModule::Term()源程序,其中在定义了_ATL_DEBUG_INTERFACES时要调用DumpLeakedThunks()输出Leak信息.所以你不调用_Module.Term()自然不会输出内存泄漏信息,但实际上你的程序中应该存在内存泄漏!!
CComModule::Term()
{
#ifdef _ATL_DEBUG_INTERFACES
m_bDestroyHeap = false; // prevent heap from going away
AtlModuleTerm(this);
DumpLeakedThunks();
delete m_paThunks;
#ifndef _ATL_NO_MP_HEAP
if (m_phHeaps != NULL)
{
for (DWORD i = 0; i <= m_dwHeaps; i++)
HeapDestroy(m_phHeaps[i]);
}
#endif
if (m_hHeap != NULL)
HeapDestroy(m_hHeap);
#else
AtlModuleTerm(this);
#endif // _ATL_DEBUG_INTERFACES
}
driverdevelop.com有down
Detected memory leaks!
Dumping objects ->
{40} normal block at 0x007700A0, 32 bytes long.
Data: <x A i > 78 84 41 00 01 00 00 00 04 CD CD CD C4 69 97 81
oleinit.cpp(86) : {31} client block at 0x00770440, subtype 0, 68 bytes long.
a CCmdTarget object at $00770440, 68 bytes long
Object dump complete.
这算不算正常,到底是什么道理?