mic1021   10달 전

메모리제한이 128MB인데 왜 메모리 초과가 뜨는걸까요..

처음에 선언한건 memo int형 배열 10001개 랑 잡다한 int형 변수 여러개니까 아무리 봐도 128MB는 초과 안될거 같거든요..

chan4928   10달 전

Memoization 함수 호출 과정에서 메모리 초과가 일어나는 듯 보입니다.

Vector를 인자로 넘기다 보니까 호출 및 깊이 들어가는 과정에서 메모리가 넘어가는 경우가 발생하는 것 같습니다.

비재귀로 재작성하여 제출하시면 해결 될 듯 싶습니다.

ntopia   10달 전

함수 호출할 때

vector<pair<int,int>> 타입 그대로 넘기게 되면

내용물을 그대로 복사해서 호출합니다

그러니 함수 호출 뎁스마다 만개짜리 벡터를 복사하고 있으니 메모리초과가 나겠죠..

레퍼런스 타입을 넘기도록 고쳐보세요

mic1021   10달 전

레퍼런스 타입으로 넘기려면 vector.begin()으로 넘겨주고 vector<pair<int,int> >&로 받으면 되는건가요?

ntopia   10달 전

받는건 그게 맞고요

넘길땐 그냥 vector 변수 그대로 넘기시면 됩니다

mic1021   10달 전

감사합니다~

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