나는 기능을 구현 그리고 난 그것이 "도서관 품질"기능 할 것을 권장합니다는 메모리 부족 장애 처리 방법
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