使用_crtBreakAlloc查找内存泄漏 – 标识符“_crtBreakAlloc”未识别
我试图在Watch窗口中使用_crtBreakAlloc
, 如此链接中所建议的那样,但是值行显示“identifier”_crtBreakAlloc“未识别”并且它根本不起作用。
我究竟做错了什么? 我顺便使用Visual Studio。
代码示例:
#define _CRTDBG_MAP_ALLOC #include #include #include int main() { int *arr = (int*)malloc(10 * sizeof(int)); //breakpoint here free(arr); return 0; }
然后我将_crtBreakAlloc写入Watch窗口的Name字段,并在遇到断点时按Enter键。
_crtBreakAlloc
是VS2015下的一个宏,它被一个函数调用替换为返回指向int的指针。 在监视窗口中跟踪变量似乎不是一种选择。
更好地插入您的(调试)代码,如下所示:
_crtBreakAlloc = 18;
如果您使用的是CRT的multithreading版本,请在监视窗口(列名称)中输入以下内容:
(int*){,,ucrtbased.dll}_crtBreakAlloc
然后按Enter键并将值-1更改为导致用户定义断点的新分配编号。
似乎对于Visual Studio 2015,有必要使用两个下划线:
(int*){,,ucrtbased.dll}__crtBreakAlloc