gidskql6671   5년 전

제가 아직 다이나믹 프로그램에 대해 잘 모르기에 질문합니다.

다이나믹 프로그램을 통해 이 문제를 풀 때, 값이 들어갈 배열( DP[1000001] )를 main 함수 안에 선언해버리면, 제대로 실행이 되지 않습니다.

즉 메인 함수 안에 배열을 선언하면 프로그램이 배열을 선언하는 도중에 멈춰버리고 종료가 되는데,

소스 코드처럼 메인 함수 밖에 배열을 선언하면 아무런 멈춤없이 바로 진행이 되더군요.

혹시 main 함수 안에 배열을 선언하는 것과 main 함수 밖에 배열을 선언하는 것이 무슨 차이가 있는지 설명해 주실 수 있으신가요?

ryute   5년 전

함수 내에서 메모리를 너무 크게 잡으면 터질 수 있어요. 큰 메모리를 할당해야되는 경우에는 전역으로 잡는게 안전합니다.

portableangel   5년 전

함수 내에 선언한 배열은 스택 공간에 메모리를 잡게 되는데, 비주얼 스튜디오를 사용하신다면 기본 스택 사이즈가 1MB여서 메모리 초과가 발생합니다.

다른 도구를 사용하시더라도 기본 스택 사이즈가 1MB 이하라면 마찬가지로 에러가 발생하겠죠

백준 저지의 스택은 64MB이기 때문에, 그냥 main 내에 넣고 제출해도 맞습니다.

스택 사이즈를 늘리려면 쓰고 계신 툴의 스택 사이즈를 늘리는 방법을 검색해보세요.

gidskql6671   5년 전

두 분 정말 감사드립니다! 비쥬얼 스튜디오 사용하는데, 제대로 작동을 안해서 물어봤어요.

덕분에 좋은 정보 알아갑니다

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