0

每次执行程序时,我都无法在 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,但即使消息没有出现,它仍然没有检测到泄漏。

4

0 回答 0