문제

배열을 만들려고하는 메신저 :int HR[32487834];이것은 약 128-130 megabytes의 기억을 차지하지 않습니까? IM MS C ++ Visual Studios 2005 SP1을 사용하고 있으며 충돌하여 오버플로 스택을 알려줍니다.

도움이 되었습니까?

해결책

컴퓨터에 기가 바이트의 메모리가있을 수 있지만 스택은 그렇지 않습니다 (기본적으로는 창에서 ~ 1MB라고 생각하지만 더 크게 만들 수 있습니다).

힙에 할당 해보십시오 new [].

다른 팁

벡터 사용 - 배열 데이터는 힙에 위치하고 기능을 떠날 때 배열을 자동으로 정리할 수 있습니다.

std::vector<int> HR( 32487834);

스택은 기본적으로 그다지 크지 않습니다. 스택 크기를 설정할 수 있습니다 /f 컴파일러 스위치.

이 옵션이 없으면 스택 크기는 기본값이 1MB입니다. 숫자 인수는 10 진수 또는 c- 언어 표기법 일 수 있습니다. 인수는 링커가 허용하는 최대 스택 크기 1에서 최대 범위의 범위가 될 수 있습니다. 링커는 지정된 값을 가장 가까운 4 바이트로 반올림합니다. /f와 숫자 사이의 공간은 선택 사항입니다.

당신은 또한 사용할 수 있습니다 /스택 링커 옵션 실행 파일 용

그러나 한 번에 모든 것을 수행하는 대신 문제를 부품으로 나누어야 할 것입니다. 한 번에 그 메모리가 모두 필요합니까?

일반적으로 스택보다 힙에 더 많은 메모리를 할당 할 수 있습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top