티스토리 뷰
이번에는 소멸자에 Virtual을 사용해야 하는 이유에 대해서 알아보겠다.
다음과 같은 코드가 있을때 동적으로 자식클래스(B) 생성후, 부모클래스(A)타입으로 받은후 삭제를 한다면 어떻게 될까?
결과는 다음과 같이 데이터타입인 A클래스의 소멸자만 호출되었다.
B클래스의 소멸자가 호출되지 않기때문에 이렇게 한다면 메모리 누수가 생기고 언젠간 프로그램이 죽어버린다;
그래서 제대로된 메모리해제를 하려면 소멸자에 virtual을 사용해야 한다.
virtual을 사용하니 다음과 같이 의도한대로 B가 메모리 해제를 하면서 소멸자가 호출되었다.
잊어버리지 말자~
누군가에게는 작은도움이 되었기를 바라면서 오늘의 포스팅 끝~
'C & C++' 카테고리의 다른 글
[C++] const int* 와 int* const의 차이점 (0) | 2016.02.01 |
---|---|
[C++] Define 사용시 주의할점 (0) | 2016.02.01 |
[C++] Virtual 키워드 사용하기 (0) | 2016.02.01 |
[C++] XOR 연산으로 정수값을 Swap 해보자! (0) | 2016.02.01 |
[C++] auto_ptr의 컨테이너는 절대로 만들지 말자! (0) | 2016.02.01 |
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- InnoDB
- 엘라스틱서치 기초
- mysql lock
- Pair-programming
- 갭 락
- MySQL 인덱스
- ruby meta programming
- 페어프로그래밍
- autoload_paths
- dead lock
- MySQL
- 넥스트 키 락
- 인덱스
- metaprogramming
- db
- 루비
- lock
- ruby
- MySQL 족보
- 페어 프로그래밍
- gap lock
- 루비 상수
- 루비 메타프로그래밍
- Elasticsearch Cluster
- Autoloading
- innoDB lock
- 메타프로그래밍
- next key lock
- 되추적
- 트랜잭션
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
글 보관함