back4740   3년 전

다들 공부하느라 고생하십니다.

여러가지 문제들을 풀던 와중

100000만 정도 되는 데이터를 저장한다고 했을때

vector<int> v(100000)은 아무 문제없이 그냥 실행되는데

int arr[100000]은 프로그램이 실행이 안되는 문제가 있어서

항상 벡터로 풀어서 문제는 풀었지마는 의구심이 있었습니다.

혹시 둘의 저장 방식에 차이가 있는 건가요??

아니면 제가 그냥 멍청한 걸까요??

너무 궁금해서 질문 드립니다..

cheetose   3년 전

혹시 main 함수 내부에 배열을 선언하셨나요?

vector는 동적배열로 메모리 상에서 heap 영역에 할당이 되고, int 배열은 지역변수로 메모리 상에서 stack 영역에 할당이 됩니다.

대부분의 환경에서 stack 영역의 크기가 굉장히 작아 (~4MB 정도) 에러가 발생하곤 합니다.

해당 배열을 전역변수로 바꾸면 해결됩니다.

back4740   3년 전

아..답변을 보고 해보면서 깨우쳤습니다. 감사합니다. 복받으시고 만수무강하세요!!

댓글을 작성하려면 로그인해야 합니다.