【发布时间】:2015-04-07 20:50:56
【问题描述】:
在C 中,当我们使用malloc 系列函数时,我们应该添加一个条件来检查分配是否成功,如果不成功,则打印一条消息。
如果我的代码中有很多分配,我有什么理由不应该把它变成一个函数吗?即:
void nullcheck(void * x){
if (x == NULL){
printf("Memory allocation has failed");
exit(1);
}
}
并调用函数:
int * a = malloc(sizeof(int));
nullcheck(a);
它使代码更好更短,有什么理由不应该这样做吗?
【问题讨论】:
-
你会在之前调用
malloc时泄露内存。 -
有时,由于内存分配失败而调用
exit并不是一个理想的策略。例如,一个应用程序可能更喜欢记录错误,并能够继续做其他事情。 -
@mch:如果您完全退出程序,那么这不太可能。
-
通常你想在退出程序之前做一些清理工作(关闭打开的文件、套接字......)。函数内部的热门
exit(1)会阻止您这样做。 -
...您可以使用
atexit注册这些东西