我试图在观察窗口中使用
_crtBreakAlloc
,如此链接所建议的那样,但是值行显示“标识符“_crtBreakAlloc”未定义”,它根本不起作用。我做错了什么?顺便说一下,我正在使用Visual Studio。
示例代码:
#define _CRTDBG_MAP_ALLOC
#include <stdlib.h>
#include <crtdbg.h>
#include <malloc.h>
int main()
{
int *arr = (int*)malloc(10 * sizeof(int)); //breakpoint here
free(arr);
return 0;
}
当我遇到断点时,我会将"_crtBreakAlloc"写入“Name”字段中的监视窗口,并按回车键。
/MTd
或/MDd
)。 - cremnoDebug
而不是Release
配置。另外,请确保执行以下操作:如果你正在使用多线程 DLL 版本的 CRT 库(/MD选项),请包含上下文运算符:{,,msvcr100d.dll}_crtBreakAlloc
(对于 VS2013,它是msvcr120d
)。 - cremno