티스토리 뷰
안녕하세요!
이번에는 제가 '16.01.12에 졸작하면서 겪은 난해한 문제에 대하여 논의하고자 글을 올렸습니다.
그때 막 한창 졸작을하던도중 종료할때 마다 오류가 나는 현상을 발견했습니다...
분명 무엇인가 Release를 하는데 뭔가 자꾸 릴리즈가 이상하단거ㅇ다.......
그래서 오류를 ㅇ찾아봤더니 상속하는 클래스들에다가 virtual ~Class(){} 가 아닌 ~Class(){} 만 써서 그런거였따..
그래서 왜 저게 이상할까 고민을해서 테스트를해봤다.
1. 가상소멸자를 쓰지 않은경우
콘솔화면에 B소멸이 없다.
왜냐면 virtual이 없어서 부모의 소멸자만 호출하고 자식은 호출하지 않기 때문이다!!!!!!
저기 만약 new로 메모리를 잡은 인스턴스가 있었다면.....
..
내 메모리
ㅜㅜㅜㅜ
그래서 개선해봤다
짠
이제 A는 물론 B도 소멸되지 않았는가!!!!!!!!!!!!!!!!
바로 이게 가상소멸자를 써야되는 이유~_~
그럼 끝
p.s 근데 함수에 Release()라는 함수를 추가해서 저기서 모든 변수를 해제해주느 ㄴ방법도 있다..!
'Programing > C++' 카테고리의 다른 글
C++17 FileSystem (0) | 2018.01.15 |
---|---|
'17.05.12 Data Struct Sample Data (0) | 2017.05.11 |
유니티 Coroutine을 C++ FrameWork에서 구현해보자! (1) | 2016.09.17 |
어머.. SVN으로 커밋하다가 오류가 떴대... (0) | 2016.07.30 |
인터페이스란!!!!!? (1) | 2016.07.08 |
댓글