cedar09212   6년 전

이쪽 초기화 부분을 전역변수로 초기화시 메모리 초과라고 뜹니다.

int N, K;
int a[100] = { 0, };
int dp[10001] = { 0, };


하지만 지역변수로 초기화시 정상적으로 성공합니다.

전역은 메모리 data영역에 저장되고 지역은 stack에 저장되는 것으로 알고 있습니다만

메모리 제약사항이란게 stack사용영역 + data사용영역 + 힙 사용영역  <= 4mb 이렇게 되는거 아닌가요?

stack사용영역 + 힙 사용영역 <= 4mb가 아닐거 같은데....

메모리초과가 나는 이유를 알고싶습니다.

yukariko   6년 전

새 배열을 선언했을때 스택이 미리 할당된 메모리만큼 제외하고 더 추가 되기 때문에 차이가 발생한 것으로 보입니다.

사실 이 문제는 전역으로 선언해도 성공합니다.

다만 지금은 채점에 문제가 발생하여 기본 메모리사용량이 증가한것이 메모리 초과의 원인으로 보입니다.

cedar09212   6년 전

그럼 현재 채점의 기본 메모리 사용량에 대한 문제가 없다면

stack사용영역 + data사용영역 + 힙 사용영역  <= 4mb 이 가능하다는 말씀이신건가요?


yukariko   6년 전

네  가능합니다.

cedar09212   6년 전

감사합니다

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