检查所有malloc是否受NULL返回保护

时间:2019-03-04 15:35:28

标签: c malloc c-preprocessor

我有一个经常使用malloc的项目。而且我想知道是否有可能以某种方式检查我所有的malloc是否都受到保护,以防止 NULL 返回?也许在头文件中定义一些东西?我试图自己做,检查了论坛-全部徒劳。有任何可能的变体吗?

1 个答案:

答案 0 :(得分:4)

您可以使用执行必要的NULL检查的包装函数来替换对malloc的所有调用:

void *safe_malloc(size_t s)
{
    void *p = malloc(s);
    if (!p) {
        perror("malloc failed");
        exit(1);
    }
    return p;
}

您也可以对callocrealloc进行同样的操作。