堆调试:在MS VC ++ 2005中断言dbgdel中的失败

时间:2012-06-14 20:54:06

标签: c++ memory memory-management memory-leaks visual-studio-2005

我在MS VC ++ 2005项目中启用了堆调试,当程序退出最后一个析构函数时,我调用了_CrtDumpMemoryLeaks()(也启用了_CRTDBG_MAP_ALLOC。但是后来我看到了以下调试断言屏幕:

enter image description here

之后我点击Retry来调试它,它带我去一些代码(这不是我的),我看到的东西:

char* name;
cstub.get("...", name);
delete [] name; 

我在想,也许名字是在get(..)函数中分配的;无论如何,我的问题是:从屏幕截图来看这是一个内存/堆错误?我可能不得不深入研究cstub的get函数正在做什么。谢谢你的任何想法。

1 个答案:

答案 0 :(得分:1)

您可能正在混合运行时。

如果分配器位于使用不同版本的Visual Studio编译的DLL中,则无法从代码中释放内存。

这就是为什么返回已分配内存的库还包括释放该内存的函数或方法。