0
동적으로 "다차원 배열"을 만드는 데 문제가 있습니다. comp.lang.c FAQ에서 6.14를 읽었으며 거기에 나열된 코드를 따르고 있습니다. malloc을 사용하여 포인터에 대한 포인터 배열을 만들 때의 분할 오류
cache_array = malloc(cm_blks * sizeof(int *));
if (cache_array = NULL) {
fprintf(stderr, "out of memory\n");
exit(1);
}
for (i = 0; i < cm_blks; i++) {
cache_array[i] = malloc(6 * sizeof(int));
if (cache_array[i] == NULL) {
fprintf(stderr, "out of memory\n");
exit(1);
}
}
변수 cm_blks
8. cache_array와 같은 내 테스트 경우, 정수 초기화 등 :int **cache_array;
코드는 잘 컴파일,하지만 두 번째의 malloc 라인에서 세그먼트 오류를 얻을 수 출력을 실행할 때.
좋은 캐치. 그것은 많은 사람들에게 이상하게 보입니다. 그러나 조건 테스트에서 변수 앞에 변수를 배치하는 것이 좋습니다. 예 :'if (NULL = cache_array)'는 오류를 변수에 할당하려고 시도했을 때 일정한. 이런 종류의 미묘한 오류를 피할 수있는 편리한 방법입니다. –
와우, 나는 그것을 완전히 놓쳤다! 눈의 두 번째 쌍을 주셔서 대단히 감사합니다! – user2321508