Sun*_*awn 7 c memory-leaks crt
我正在尝试_crtBreakAlloc在此链接中建议的Watch窗口中使用,但值行显示'identifier'_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;
}
Run Code Online (Sandbox Code Playgroud)
然后我将_crtBreakAlloc写入Watch窗口的Name字段,并在遇到断点时按Enter键.
如果未加载 ucrtbased.dll 符号,_crtBreakAlloc 将报告为未识别。我有这个问题,因为我不会自动加载我的符号。您可以进入您的模块列表并手动加载 ucrtbased.dll 的符号,然后 _crtBreakAlloc 应该显示并工作。
小智 4
_crtBreakAlloc是VS2015下的宏,被替换为调用返回int指针的函数。在监视窗口中跟踪变量似乎不是一个选项。
最好在您的(调试)代码中插入如下内容:
_crtBreakAlloc = 18;
Run Code Online (Sandbox Code Playgroud)