检查`malloc`是否在C中成功

时间:2011-04-09 19:50:17

标签: c malloc

我想使用malloc分配内存并检查它是否成功。类似的东西:

if (!(new_list=(vlist)malloc(sizeof (var_list))))
  return -1;

如何检查成功?

4 个答案:

答案 0 :(得分:21)

malloc在失败时返回空指针。因此,如果您收到的内容不为null,则它指向一个有效的内存块。

由于NULLif语句中的计算结果为false,因此您可以非常直接地检查它:

value = malloc(...);
if(value)
{
    // value isn't null
}
else
{
    // value is null
}

答案 1 :(得分:6)

手册页:

  

如果成功,calloc()malloc()realloc()reallocf()valloc()函数会返回指向已分配内存的指针。如果出现错误,则会返回NULL指针并将errno设置为ENOMEM

答案 2 :(得分:5)

new_list=(vlist)malloc(sizeof (var_list)
if (new_list != NULL) {
  /* succeeded */
} else {
  /* failed */
}

答案 3 :(得分:0)

您已经测试过错误的代码,尽管我通常会将分配和检查分为两行:

malloc()

(注意两个小变化 - 你不应该转换返回值,我们从变量而不是它的类型中获取大小以减少不匹配的可能性。)

如果return -1;失败,则返回空指针,这是 false 唯一的指针值。

你所拥有的错误处理只是LOG_LINE_SEPARATOR=$(for i in `seq 60`; do echo -n "-"; done); git log --pretty="format:$LOG_LINE_SEPARATOR%nuser: %an%ncommit id: %H%ndate: %aD%ndescription: %B%nfile name: " --name-only - 你如何处理调用函数中的问题取决于你,真的。