EDIT : 사람들이 만든 제안에 따라 프로그램을 변경했지만 메모리 누수 문제를 해결할 수 없습니다. 또한, argc를 사용하지 않고 그것들을 해제 할 필요가 있으므로 배열의 길이를 어떻게 든 추적해야하므로 마지막 요소를 null로 표시했습니다.C의 여유 메모리 (메모리 누출 문제를 해결할 수 없음)
현재 동적으로 할당 된 배열에 명령 줄 인수를 복사하는 C 프로그램을 작성하고 있습니다.
char** array_copy = array;
while(*array_copy != NULL){
free(*array_copy++);
}
free(*array_copy) // free the null at the end
free(array);
그러나, 나는 여전히 메모리 누수를 얻을 :
char **array;
int j;
array = malloc(sizeof(char*) * (argc + 1));
int i;
int index = 0;
for(i = 0; i < (argc); i++){
int length = strlen(*(argv + i));
array[i] = malloc((length + 1) * sizeof(char));
// Cycle through all the chars and copy them in one by one
for(j = 0; j <= length; j++){
array[i][j] = toupper(argv[i][j]);
}
}
array[i + 1] = NULL;
return array;
나중에, 내가 메모리를 해제하려고 :처럼 내 코드 보인다. 나는 내가 뭘 잘못하고 있는지 잘 모르겠습니다. 누군가가 나에게 멋진 팁을 줄 수 있다면.
감사합니다.
왜 배열에 대해'argc + 1'을 malloc합니까? 'argc' 만 필요합니다. 또한 'while'루프가 삭제되었습니다. 배열 크기를 항상 계산하십시오. – pmr