2011-09-20 6 views
2

기본적으로 C에서 할당 된 배열로 주 메모리를 채울 필요가있는 할당이 있습니다. VS2010을 사용하고 스택 오버플로 오류를 받으면 계속 처리합니다. 스택 예비를 기본 1MB 이상으로 늘리면 도움이되었습니다. 그러나 지금 작업하고있는 배열 크기는 더 커졌으며 아무리 많이 늘리더라도 계속 스택 오버플로 오류가 발생합니다. 도움을 주시면 감사하겠습니다. -thanks스택 오버플로를 늘린 후 스택 오버플로

+1

일부 코드는 어떨까요? – ChrisWue

+2

+1 스택 오버플로에 대한 질문에 대한 대답은이 질문의 제목을 읽은 후 –

+0

입니다. 한번 생각해 보면 재귀 적 질문이었습니다. : P –

답변

3

아마도 스택에 배열을 할당 할 것입니다. 그래서 스택이 전체 메인 메모리만큼 커지지 않기 때문에 스택 오버 플로우가 발생합니다.

malloc()을 사용하여 힙에 배열을 만들어야합니다. 그러면 모든 주 메모리를 모두 사용할 수 있습니다.

즉,이 작업을 수행 할 수 없습니다 확실히 스택을 날려 버리겠다

int array[1000000]; 

합니다. 이 작업을 수행해야합니다

int *array = malloc(1000000 * sizeof(int)); 

당신은 이런 식으로 결국 무료 필요

free(array); 

그렇지 않으면 당신이 memory leak을 얻을 것이다.

+1

@Mystical 메모리를 해제하는 것을 잊지 마세요! – quasiverse

+0

네, 그 역시 중요합니다. 추가됨. – Mysticial

관련 문제