dydsj0920   6년 전

메모리 초과를 발생시키는 예제를 만들기가 힘드네요..

bupjae   6년 전

하나의 테스트 케이스가 끝나고 다음 테스트 케이스로 넘어갈 때 new로 할당했던 메모리를 정리하지 않기 때문에 메모리가 초과된 걸로 보입니다.

dydsj0920   6년 전

와 정말 그렇네요! 답변 정말 감사합니다.

제가 알고리즘을 비쥬얼 스튜디오로 짜고 있는데

혹시 메모리 초과시에 디버깅으로 잘 알아낼 수 있는 팁이 있을까요?

그냥 문법적인 이론과 경험만 가지고 판단하신건가요?

bupjae   6년 전

저는 Visual Studio가 아닌 다른 툴을 사용하고 있기 때문에 VS에서 어떻게 메모리 사용량을 파악할 수 있는지는 잘 모르겠습니다.

다만, Windows 에서는 작업 관리자 (taskmgr) -> 세부 정보 에 들어가면 각 프로그램의 현재 메모리 사용량을 대략적으로 알 수 있습니다.

물론, 개발 환경과 채점 환경이 다르기 때문에 BOJ에서 보는 메모리 사용량과는 크게 다를 수는 있지만, 상황 파악은 어느정도 할 수 있을 것입니다. 

메모리 초과 관련 질문에 대한 답변을 해 줄 때는 먼저 프로그램의 공간복잡도를 계산해서 문제에서 요구한 메모리 제한에 맞출 수 있는지를 먼저 계산해 봅니다.

그 후, C/C++와 같이 garbage collector 가 없는 언어로 된 프로그램인 경우 동적 메모리 할당과 해제가 올바로 이루어졌는지를 확인합니다.

경험상 메모리 초과의 원인은 거의 대부분 이 두 가지 원인 중 하나(또는 둘 다) 였습니다.

dydsj0920   6년 전

정말 좋은 팁 감사드립니다!!!

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