我想使用malloc
分配内存并检查它是否成功。类似的东西:
if (!(new_list=(vlist)malloc(sizeof (var_list))))
return -1;
如何检查成功?
答案 0 :(得分:21)
malloc
在失败时返回空指针。因此,如果您收到的内容不为null,则它指向一个有效的内存块。
由于NULL
在if
语句中的计算结果为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
- 你如何处理调用函数中的问题取决于你,真的。