티스토리 뷰


안녕하세요!


이번에는 제가 '16.01.12에 졸작하면서 겪은 난해한 문제에 대하여 논의하고자 글을 올렸습니다.


그때 막 한창 졸작을하던도중 종료할때 마다 오류가 나는 현상을 발견했습니다...


분명 무엇인가 Release를 하는데 뭔가 자꾸 릴리즈가 이상하단거ㅇ다.......


그래서 오류를 ㅇ찾아봤더니 상속하는 클래스들에다가 virtual ~Class(){} 가 아닌 ~Class(){} 만 써서 그런거였따..


그래서 왜 저게 이상할까 고민을해서 테스트를해봤다.





1. 가상소멸자를 쓰지 않은경우

콘솔화면에 B소멸이 없다.

왜냐면 virtual이 없어서 부모의 소멸자만 호출하고 자식은 호출하지 않기 때문이다!!!!!!


저기 만약 new로 메모리를 잡은 인스턴스가 있었다면.....

..

내 메모리

ㅜㅜㅜㅜ

그래서 개선해봤다





짠 

이제 A는 물론 B도 소멸되지 않았는가!!!!!!!!!!!!!!!!


바로 이게 가상소멸자를 써야되는 이유~_~


그럼 끝






p.s 근데 함수에 Release()라는 함수를 추가해서 저기서 모든 변수를 해제해주느 ㄴ방법도 있다..!



댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG
more
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함