뭔가를 선언 할 때이 같은오류이 오류가 발생합니다 같은 지역 배열을
using namespace std;
int main()
{
int test[1000000] = {};
}
뭔가하지 않습니다
using namespace std;
int test[1000000] = {};
int main()
{
}
이유입니다? 백만 int는 너무 많은 메모리를 요구하지 않습니다.
뭔가를 선언 할 때이 같은오류이 오류가 발생합니다 같은 지역 배열을
using namespace std;
int main()
{
int test[1000000] = {};
}
뭔가하지 않습니다
using namespace std;
int test[1000000] = {};
int main()
{
}
이유입니다? 백만 int는 너무 많은 메모리를 요구하지 않습니다.
첫 번째 것은 스택에 공간을 할당합니다. 두 번째 것은 컴파일/링크시 데이터 세그먼트에 공간을 할당합니다. 스택의 크기는 제한되어 있습니다.
스택 동적 아니지만, 당신은 또한이
int* arr = new int[1000000];
을 할 수 있지만,이 동적 메모리는 힙의 배열이 선언 때문에 삭제하는 것을 잊지 마세요 및 힙에서 삭제하여 당신이 방지 메모리 누출.
예 :
delete arr;
이 메모리 매우 질문 옆의
를 사용하는 방법을 단지 대안입니다. – Deduplicator
@Deduplicator 나는 동의하지 않는다. 이렇게하면 스택 대신 힙에서 배열이 할당되므로 OP의 오류가 해결됩니다. –
@DavidLively 바로 그게 바로 그 이유입니다. 문제는 "어떻게 수정해야합니까?"가 아니라 "왜 이런 일이 일어나는가"입니다. 스택 할당이 실패한 이유를 설명합니다. – Borgleader