나는 문제하던 부호 INT 크기 긴 긴 배열을 선언 유형 :I대로 배열 선언하면서 세그멘테이션 오류 발생시
unsigned int findMax(unsigned int arr[],int size)
어떻게 해결할 수 있습니까?
나는 문제하던 부호 INT 크기 긴 긴 배열을 선언 유형 :I대로 배열 선언하면서 세그멘테이션 오류 발생시
unsigned int findMax(unsigned int arr[],int size)
어떻게 해결할 수 있습니까?
가능한 이유는 배열이 스택에 비해 너무 큽니다.
현재 일반적인 스택 크기는 1-16 Mb입니다 (임베디드 시스템에서 상당히 적을 수 있음). long long
이 8 바이트이면 125000 개가 넘는 요소 중 하나의 배열을 할당하는 것이 문제가 될 수 있음을 의미합니다. 그리고 다른 자동 변수를위한 공간을 남기고 싶습니다.
큰 배열은 스택에 할당하면 안됩니다.
대신 힙에 할당 시도 할 수 있습니다 :`max`이 얼마나 큰
long long *ways = calloc(max+1, sizeof *ways);
if (ways == NULL) {
// allocation failed!!
}
// Do stuff.
free(ways);
를? 스택 오버플로가 예상됩니다. –