2014-12-19 8 views

답변

2

가능한 이유는 배열이 스택에 비해 너무 큽니다.

현재 일반적인 스택 크기는 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); 
+1

사소한 아이디어 :'long long * ways = calloc (max + 1, sizeof * ways);'스타일. IMO, 코드 작성 및 유지 관리가 더 쉽습니다. – chux

+1

@chux 동의! 그렇게하면 배열 유형을 변경하려는 경우 변경할 위치가 하나 더 줄어 듭니다. –

+0

죄송합니다.이 둘의 차이점을 발견 할 수 없습니다. – Chandan