gpt4 book ai didi

c - 有什么理由不把 malloc 之后的空检查变成函数吗?

转载 作者:太空宇宙 更新时间:2023-11-04 05:09:18 25 4
gpt4 key购买 nike

C 中,当我们使用 malloc 系列函数时,我们应该添加一个条件来检查分配是否成功,如果没有,则打印一条消息。

如果我的代码中有很多分配,我有什么理由不应该把它变成一个函数?即:

void nullcheck(void * x){
if (x == NULL){
printf("Memory allocation has failed");
exit(1);
}
}

并调用函数:

int * a = malloc(sizeof(int));
nullcheck(a);

它使代码更好更短,有什么理由不应该这样做吗?

最佳答案

is there any reason why it shouldn't be done?

如果您的应用程序能够在分配失败时立即退出,那么请务必将其设为一个函数,甚至将其合并到分配函数中。

如果您正在编写需要比这更好的代码(例如库),您不能这样做,因为在释放任何已成功分配的内容后通常必须返回错误代码。

在后一种情况下,模式如下所示:

p1 = malloc(…);
if (!p1) goto error;
p2 = malloc(…);
if (!p2) goto free1;
p3 = malloc(…);
if (!p3) goto free2;

free2:
free(p2);
free1:
free(p1);
error:
return -1;

关于c - 有什么理由不把 malloc 之后的空检查变成函数吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29501068/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com