SNAIL RTE 질문 있습니다. AlKook 최근 제출된 답안: 311846 output log: RTE (SIGKILL: program was forcefully killed, probably memory limit exceeded) 여기서 메모리 초과가 나는 이유를 잘 모르겠습니다. 최대로 잡았을때 double을 1000 * 2000개 메모리에 올리는데 16000000byte ~= 16000kb 라서 허용범위안에 들어간다고 생각했습니다. source code: #include <iostream> #include <iomanip> using namespace std; double climb(int day, int climbed, int deadline, int depth, double** cache) { if (day == deadline) { return (climbed >= depth) ? (1) : (0); } double& ret = cache[day][climbed]; if (ret != -1) { return ret; } return ret = 0.25 * climb(day+1, climbed+1, deadline, depth, cache) + 0.75 * climb(day+1, climbed+2, deadline, depth, cache); } void solveCase(void) { int depth = 0; int deadline = 0; cin >> depth >> deadline; double** cache = new double*[deadline]; for (int i = 0; i< deadline; i++) { cache[i] = new double[deadline*2 + 1]; } for (int i = 0; i< deadline; i++) { for (int j = 0; j< deadline*2 +1; j++) { cache[i][j] = -1; } } double answer = climb(0, 0, deadline, depth, cache); cout.precision(10); cout.setf(ios::fixed, ios::floatfield); cout << answer << endl; } int main(void) { int cases=0; cin >> cases; while(cases--) { solveCase(); } return 0; } 9년 전
4개의 댓글이 있습니다. jseo 메모리 free를 안하시는것 같네요. 9년 전 link AlKook 현재 코드를 보시면 매 test case마다 solveCase 함수로 재 진입하고 있습니다. solveCase 함수가 종료될때 자동으로 메모리는 해제되지 않는건가요? 9년 전 link jseo 메모리를 힙에 할당하고 있어서 함수가 종료되도 자동으로 해제되지 않습니다. 9년 전 link AlKook 제가 잘못 생각 하고 있었네요. 알려주셔서 감사합니다. 동적할당: 스택을 벗어날때가 아니라 프로세스가 모두 종료될때 OS에서 자동 반환. 9년 전 link 정회원 권한이 있어야 커멘트를 다실 수 있습니다. 정회원이 되시려면 온라인 저지에서 5문제 이상을 푸시고, 가입 후 7일 이상이 지나셔야 합니다. 현재 문제를 푸셨습니다.
AlKook
최근 제출된 답안:
311846
output log:
RTE (SIGKILL: program was forcefully killed, probably memory limit exceeded)
여기서 메모리 초과가 나는 이유를 잘 모르겠습니다.
최대로 잡았을때 double을 1000 * 2000개 메모리에 올리는데
16000000byte ~= 16000kb 라서 허용범위안에 들어간다고 생각했습니다.
source code:
9년 전