我的功能實現,我想這是一個「庫質量」功能:外的內存故障處理方法
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庫的應用程序來說並不好。
問題:有沒有更好的解決方案?
你是什麼意思「不好」?另外,我認爲你有一些內存泄漏? – Xymostech
@Xymostech:內存泄漏 - 我想問題是我沒有釋放第一個參數並分配一個新塊。如果是這樣,因爲第一個參數是char **(指向字符串的指針),而且它可能是指向代碼段字符串的指針,我選擇不處理它。 – Sanich
那麼,如果你擔心內存泄漏之前擔心內存不足的情況,那麼我認爲你的優先級混淆了。 – Xymostech