다들 공부하느라 고생하십니다.
여러가지 문제들을 풀던 와중
100000만 정도 되는 데이터를 저장한다고 했을때
vector<int> v(100000)은 아무 문제없이 그냥 실행되는데
int arr[100000]은 프로그램이 실행이 안되는 문제가 있어서
항상 벡터로 풀어서 문제는 풀었지마는 의구심이 있었습니다.
혹시 둘의 저장 방식에 차이가 있는 건가요??
아니면 제가 그냥 멍청한 걸까요??
너무 궁금해서 질문 드립니다..
혹시 main 함수 내부에 배열을 선언하셨나요?
vector는 동적배열로 메모리 상에서 heap 영역에 할당이 되고, int 배열은 지역변수로 메모리 상에서 stack 영역에 할당이 됩니다.
대부분의 환경에서 stack 영역의 크기가 굉장히 작아 (~4MB 정도) 에러가 발생하곤 합니다.
해당 배열을 전역변수로 바꾸면 해결됩니다.
아..답변을 보고 해보면서 깨우쳤습니다. 감사합니다. 복받으시고 만수무강하세요!!
댓글을 작성하려면 로그인해야 합니다.
back4740 3년 전
다들 공부하느라 고생하십니다.
여러가지 문제들을 풀던 와중
100000만 정도 되는 데이터를 저장한다고 했을때
vector<int> v(100000)은 아무 문제없이 그냥 실행되는데
int arr[100000]은 프로그램이 실행이 안되는 문제가 있어서
항상 벡터로 풀어서 문제는 풀었지마는 의구심이 있었습니다.
혹시 둘의 저장 방식에 차이가 있는 건가요??
아니면 제가 그냥 멍청한 걸까요??
너무 궁금해서 질문 드립니다..