2014-10-08 3 views

답변

5

첫 번째 것은 스택에 공간을 할당합니다. 두 번째 것은 컴파일/링크시 데이터 세그먼트에 공간을 할당합니다. 스택의 크기는 제한되어 있습니다.

0

스택 동적 아니지만, 당신은 또한이

int* arr = new int[1000000]; 

을 할 수 있지만,이 동적 메모리는 힙의 배열이 선언 때문에 삭제하는 것을 잊지 마세요 및 힙에서 삭제하여 당신이 방지 메모리 누출.

예 :

delete arr; 

이 메모리 매우 질문 옆의

+2

를 사용하는 방법을 단지 대안입니다. – Deduplicator

+0

@Deduplicator 나는 동의하지 않는다. 이렇게하면 스택 대신 힙에서 배열이 할당되므로 OP의 오류가 해결됩니다. –

+1

@DavidLively 바로 그게 바로 그 이유입니다. 문제는 "어떻게 수정해야합니까?"가 아니라 "왜 이런 일이 일어나는가"입니다. 스택 할당이 실패한 이유를 설명합니다. – Borgleader

관련 문제