jyc4836   5년 전

스택을 typedef까지 써서 만든 원래 코드는 런타임 에러가 뜨면서 스택의 아이디어만 쓰고 스택 구현은 하지도 않은 훨씬 간단한 코드로는 잘만 통과하는 것이 이상해서 원래 코드의 리뷰를 좀 하려고 올려봅니다. 가운데 길게 주석으로 ----- 한 부분 아래쪽이 통과한 코드고, 그 위쪽이 문제가 있던 원래 코드입니다.

지문에 나오는 예시와 https://www.acmicpc.net/board/... 도 확인해봤습니다. 매 반복마다 스택에 쓰는 동적 할당된 배열을 free()로 풀어준 뒤 다시 할당하고 있습니다. 그냥 탑을 가리키는 변수만 -1로 바꿔도 되는데 확실하게 가자 싶어 일단은 위에 말한 대로 하고 있습니다

다른 런타임 오류 글도 더 찾아봤는데 ')'의 경우에 바로 인덱스를 --해버린 케이스는 제가 따로 isEmpty(stack* s)를 만들어둔 게 있어서 문제가 안 될 것 같고, 배열 최대 갯수 문제인가 싶어 (만 50개, )만 50개, ( 25개 )25개도 해 봤는데 전부 멀쩡하게 출력합니다. 

메인 함수 첫 줄에 아무 내용이나 출력하게 해도 런타임 에러가 뜨던데, 배열 참조 이슈가 아니라면 구조체 자체의 문제일까요?

djm03178   5년 전

30번째 줄을 띄우면 런타임 에러는 사라집니다. 맨 처음에는 arr에 아무것도 할당이 안 되어 있는데 free를 시도하니 문제가 됩니다.

그래도 답은 틀립니다.

djm03178   5년 전

틀리는 건 61번째 줄 때문이고, 이것도 지우면 맞습니다.

jyc4836   5년 전

흠 할당을 하지도 않은 데에 free해주는 건 안 됐네요 ㅠ 감사합니다

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