malloc()
如果分配不成功,则返回空指针.free()
遗憾的是,不会重新分配是否成功,因为其签名是:
void free(void* ptr)
Run Code Online (Sandbox Code Playgroud)
是否有可能:
free()
在没有调试器为您崩溃应用程序的情况下尝试并知道释放是否成功?
事先free()
得到指针是否会导致失败或成功?
Lun*_*din 12
就C标准而言:
如果返回malloc()
的指针等于您传递给的指针free()
,那么free()
将始终成功.唯一可用的错误检查是将指针与原始地址的副本进行比较,然后再将其传递给free()
.例:
type_t* foo = malloc(sizeof(*foo));
type_t* const original = foo;
...
if(foo == original)
{
free(foo);
}
else
{
halt_and_catch_fire();
}
Run Code Online (Sandbox Code Playgroud)
如果您需要更高级的错误处理,则必须使用特定于操作系统的API函数.