0

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

在此处输入图像描述

之后我点击 Retry 来调试它,它把我带到一些代码(这不是我的),我在其中看到如下内容:

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

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

4

1 回答 1

1

您可能正在混合运行时。

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

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

于 2012-06-14T22:20:40.250 回答