liyu4752   5년 전

메모리 해제를 하는 메소드를 호출하면 시간 초과라고 뜨네요.

해제 메소드를 빼면 정답이라고 뜨긴 합니다.. 

그래서 문제 풀 때 해제에 대해 처리를 안 해도 되는지 궁금합니다.

ntopia   5년 전

코드에 문제가 있습니다. 구체적으로는 Pop_Front() 와 Pop_Back() 에요.

4

push_back 3

push_back 2

pop_back

pop_back

이런 입력을 수행하고 나면 원래는 덱이 비어있어서 _head 와 _tail 둘 다 nullptr 이어야 하는데

실제로 위 코드로 이 입력을 수행해보면

_head 에도 이상한 주소가 남아있고 _head->prev 에도 이상한 주소가 남아있습니다.

이렇게 된 상태에서 Clear() 를 부르면

무한루프를 돌게 됩니다.

물론 시스템에 따라서 무한루프를 돌지 않고 그냥 프로그램이 종료될 수도 있습니다. (double free 인 상황이서 수행하다가 죽음)

여튼 그래서 이런 이유 때문에 Clear() 를 부르면 무한루프를 돌아서 시간초과가 나는 듯 합니다.

ntopia   5년 전

버그를 고쳐서 내면 시간초과 안나고 잘 맞네요

liyu4752   5년 전

답변 감사합니다 :)  

말씀대로 고쳐보니 해결했습니다. 감사합니다!

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