gpt4 book ai didi

c - 内存不足故障处理方法

转载 作者:行者123 更新时间:2023-11-30 14:22:25 25 4
gpt4 key购买 nike

我正在实现一个函数,我希望它成为一个“库质量”函数:

char** str_cat(char** const  str, const char * const other ){

if(str==NULL)
return NULL;
if(other==NULL)
return str;
if(*str==NULL)
return str_cpy(str,other);

char* tmp=(char*)calloc(1,strlen(*str)+strlen(other)+1);
if(tmp==NULL)
return NULL;
strcat(strcpy(tmp,*str),other);
*str=tmp;
return str;
}

这是 strcat() 函数的一个版本(不同的签名),可以处理任何极端的用例。但是,我的内存不足故障处理方法对于大量使用丰富的 str_xxx() API 库的大型应用程序来说并不好。

问题:有更好的解决方案吗?

最佳答案

我建议使用 malloc 的包装器,比方说 xmalloc (或 calloc 的等效项),它返回 NULL,使内存不足情况成为应用程序的责任 - 或终止应用程序。前者是健壮、可移植库的不错选择。然而,在现代操作系统的背景下,后者是相当合理的。当发生 OOM 错误时,应用程序会遇到严重问题,并且可能无法恢复。 xmalloc 可能会尝试执行一些清理、保存关键数据等。

关于c - 内存不足故障处理方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13780008/

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