每次执行程序时,我都无法在 Macos 上使用 fsanitize,出现以下消息:
a.out(1003,0x111253600) malloc:由于无法预先分配保留的 vm 空间而放弃了 nano zone。
代码工作,但它不再检测到泄漏。我使用 clang -fsanitize=address main.c 进行编译,其中 main.c 只是一个测试,我不释放使用 malloc 分配的字符串:
#include <unistd.h>
#include <string.h>
#include <stdlib.h>
int main()
{
char *a;
a = (char *)malloc(sizeof(char) * 5);
a[0] = 't';
a[1] = 'e';
a[2] = 's';
a[3] = 't';
a[4] = '\0';
write(1, a, strlen(a));
return (0);
}
这个程序的结果:
a.out(1033,0x1086d8600) malloc:由于无法预先分配保留的 vm 空间而放弃了 nano 区域。测试%
我在互联网上找到的唯一解决方案是将 MallocNanoZone 变量设置为 0,但即使消息没有出现,它仍然没有检测到泄漏。