[C++ lab] 10. 메모리 누수 체크

Post on 10-Jun-2015

3.722 views 11 download

Transcript of [C++ lab] 10. 메모리 누수 체크

10. 메모리 누수 체크(L) C++ 프로그래밍

박민근

메모리 누수 체크(Memory Leak Check)

메모리 해제 주의 사항

메모리 해제 테크닉

메모리 해제 주의 사항 (2)

댕글링 포인터 Dangling Pointer

댕글링 포인터 Dangling Pointer

댕글링 포인터 이미 해제된 메모리를 가르키고 있는유효하지 않은 포인터

메모리 누수 Memory Leak

메모리 누수 (Leak)할당된 메모리를가르치고 있는 포인터가 없어져서 해제 할 수가 없다

메모리 누수 Memory Leak

체크를 할 수 없다는 것이 더 큰 문제 !!

메모리 누수 체크

메모리 누수 체크 - 테스트

프로그램 종료 후에 해제 되지 않은 메모리 릭을 체크하여 출력한다 . 릭이 발생한 메모리 크기와 메모리 내용 , 할당한 코드를 보여준다 .메시지를 더블 클릭하면 , 메모리를 할당한 코드로 이동 !

메모리 누수 체크• 현업 개발에서는 좀 더 전문적인 도구들을 사용한다 .

• 상용 툴 / 오픈소스 등이 존재 한다 .

• 대표적인 오픈소스 : VLD

가상 소멸자를 써야하는 이유

가상 소멸자

일반 소멸자

메모리 릭이 발생 !!

일반 소멸자

메모리 릭이 발생 !!

가상 소멸자

원인 다형성으로 인해 , 오버라이딩 된 자식 클래스의

소멸자가 호출 되지 않았기 때문

해결 부모 클래스의 소멸자를 virtual 로 선언 한다 .

가상 생성자는 존재 하지 않는다 !

부모는 자식이 될 수 없다 .