라고 오류 : 분할 오류 (코어 덤프) 무료 방법은 내가 문자의 배열을위한 메모리 공간을 확보하기 위해 노력하고
static void cleanArray(char* array)
{
int i;
int size = strlen(array) + 1;
for(i = 0; i < size; i++)
free(array[i]);
free(array);
}
int main(){
char* array = (char *)malloc(1 * sizeof(char*));
int c;
for(c=0;c<100;c++){ //code to populate some string values in the array.
void *p = realloc(array, (strlen(array)+strlen(message)+1)*sizeof(char*));
array = p;
strcat(array, "some string");
}
cleanArray(array); //I get error only when I call this method.
}
그러나
위의 코드를 내가Segmentation fault
오류가 있어요.
그리고 난 그냥 대신 cleanArray의 다음 코드() 나는 배열이 최대 해제 해달라고 생각을하려고하면
free(array);
printf("%s",array); //it prints all the values in the array. Hence, I concluded it is not freedup.
+1. 또한,'strlen (array)'는 첫 번째 호출에서 정의되지 않은 결과를 주며, 'message'는''some string' '과 길이가 같지 않으면'strlen (message)'가 잘못됩니다. – simonc
@NPE : 첫 번째 지점을 따라갔습니다. 하지만 printf (배열)를 free (배열) 뒤에 넣으면 모든 문자가 다시 인쇄되는 것을 볼 수 있습니다 ... 두 번째 점은 올바른 방법을 제안 해주십시오. – Arun
@imonc : 테스트 데이터를 확인했습니다. 배열 내부의 문자 수를 나타냅니다. – Arun