gpt4 book ai didi

c - 如果 malloc 失败了怎么办?

转载 作者:IT王子 更新时间:2023-10-28 23:29:30 24 4
gpt4 key购买 nike

如果 malloc 分配失败,我们应该再试一次吗?

在这样的情况下:

char* mystrdup(const char *s)  
{
char *ab = NULL;

while(ab == NULL) {
ab=(char*)malloc(strlen(s)+1);
}

strcpy(ab, s);
return ab;
}

while 循环对于检查内存分配是否有效?

最佳答案

一般来说,现代的 malloc() 实现将返回 NULL 仅作为绝对的最后手段,再试一次肯定无济于事。唯一有用的是释放一些内存,然后再试一次。如果您的应用程序拥有任何消耗性资源,那么现在是释放它们的时候了,然后再试一次。

在某些环境中,一种有用的做法是分配少量内存作为未雨绸缪。如果 malloc() 曾经确实 返回 NULL,你可以释放那个未雨绸缪的资金,然后分配你需要的任何资源处理错误并优雅地退出。这是使用旧的 Macintosh Toolbox 编程时的常见做法。如果 malloc() 返回 NULL,您可以使用该空间创建一个对话框以在退出前报告问题。

关于c - 如果 malloc 失败了怎么办?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11788803/

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