학교에서 과제로 비행기 예약 프로그램을 만들었습니다.
Linked List를 이용한 프로그램이었는데, 깜빡하고 소멸자를 코딩을 하지 않았을때는 모든 것이 잘 돌아가는 듯 싶었습니다.
하지만, 소멸자를 코딩한 뒤에는 잘못된 주소를 참조하였는지 간헐적으로 에러가 발생하는군요.
제가 생각하기에는 임시로 사용하려고 만들어주는 클래스(소스에서 TempAir와 같은..)가 생성될때, Deafult Constructor를 무시한뒤 작성되기 때문 인것 같습니다. 분명히 NULL포인터를 가져야 할 곳에서 NULL이 아닌 다른 주소를 가지게 되고, 소멸자에선 그 메모리 주소의 변수를 삭제하려 하는 도중에 발생하는 것입니다.
Linked List 안에 또 하나의 Linked List가 들어있기 때문인 것도 같은데, AirPlane속의 Linked List를 Pointer로 만들어보아도, 동적생성으로 바꾸어 보아도 비슷한 문제가 생기는 것을 보면 분명 문제는 소멸자 부분에 있는 듯 합니다.
분명히 Constructor에서 초기화가 되어져 있고, 다른 부분에서도 문제를 찾을 수 없는 것 같은데, 왜 이런 문제가 발생하는 지를 알고 싶습니다.
혹은 저의 Pointer사용법이 잘못되었는지, 잘못되었다면 어느 부분에서 잘못 되었는지 알고 싶습니다.
(무리한 부탁/질문 인줄은 알지만, 레포트는 소멸자가 없는 형태로 제출하려고 프린트도 해놨구요, 제가 아는 범위 안에서는 도저히 해결되지 않을 문제점이라서 이렇게 질문을 올립니다.
좋은 하루 되세요)
|