[c++ lab] 10. 메모리 누수 체크
TRANSCRIPT
![Page 1: [C++ lab] 10. 메모리 누수 체크](https://reader031.vdocuments.net/reader031/viewer/2022020711/5577d081d8b42ae0418b4de6/html5/thumbnails/1.jpg)
10. 메모리 누수 체크(L) C++ 프로그래밍
박민근
![Page 2: [C++ lab] 10. 메모리 누수 체크](https://reader031.vdocuments.net/reader031/viewer/2022020711/5577d081d8b42ae0418b4de6/html5/thumbnails/2.jpg)
메모리 누수 체크(Memory Leak Check)
![Page 3: [C++ lab] 10. 메모리 누수 체크](https://reader031.vdocuments.net/reader031/viewer/2022020711/5577d081d8b42ae0418b4de6/html5/thumbnails/3.jpg)
메모리 해제 주의 사항
![Page 4: [C++ lab] 10. 메모리 누수 체크](https://reader031.vdocuments.net/reader031/viewer/2022020711/5577d081d8b42ae0418b4de6/html5/thumbnails/4.jpg)
메모리 해제 테크닉
![Page 5: [C++ lab] 10. 메모리 누수 체크](https://reader031.vdocuments.net/reader031/viewer/2022020711/5577d081d8b42ae0418b4de6/html5/thumbnails/5.jpg)
메모리 해제 주의 사항 (2)
![Page 6: [C++ lab] 10. 메모리 누수 체크](https://reader031.vdocuments.net/reader031/viewer/2022020711/5577d081d8b42ae0418b4de6/html5/thumbnails/6.jpg)
댕글링 포인터 Dangling Pointer
![Page 7: [C++ lab] 10. 메모리 누수 체크](https://reader031.vdocuments.net/reader031/viewer/2022020711/5577d081d8b42ae0418b4de6/html5/thumbnails/7.jpg)
댕글링 포인터 Dangling Pointer
댕글링 포인터 이미 해제된 메모리를 가르키고 있는유효하지 않은 포인터
![Page 8: [C++ lab] 10. 메모리 누수 체크](https://reader031.vdocuments.net/reader031/viewer/2022020711/5577d081d8b42ae0418b4de6/html5/thumbnails/8.jpg)
메모리 누수 Memory Leak
메모리 누수 (Leak)할당된 메모리를가르치고 있는 포인터가 없어져서 해제 할 수가 없다
![Page 9: [C++ lab] 10. 메모리 누수 체크](https://reader031.vdocuments.net/reader031/viewer/2022020711/5577d081d8b42ae0418b4de6/html5/thumbnails/9.jpg)
메모리 누수 Memory Leak
체크를 할 수 없다는 것이 더 큰 문제 !!
![Page 10: [C++ lab] 10. 메모리 누수 체크](https://reader031.vdocuments.net/reader031/viewer/2022020711/5577d081d8b42ae0418b4de6/html5/thumbnails/10.jpg)
메모리 누수 체크
![Page 11: [C++ lab] 10. 메모리 누수 체크](https://reader031.vdocuments.net/reader031/viewer/2022020711/5577d081d8b42ae0418b4de6/html5/thumbnails/11.jpg)
메모리 누수 체크 - 테스트
프로그램 종료 후에 해제 되지 않은 메모리 릭을 체크하여 출력한다 . 릭이 발생한 메모리 크기와 메모리 내용 , 할당한 코드를 보여준다 .메시지를 더블 클릭하면 , 메모리를 할당한 코드로 이동 !
![Page 12: [C++ lab] 10. 메모리 누수 체크](https://reader031.vdocuments.net/reader031/viewer/2022020711/5577d081d8b42ae0418b4de6/html5/thumbnails/12.jpg)
메모리 누수 체크• 현업 개발에서는 좀 더 전문적인 도구들을 사용한다 .
• 상용 툴 / 오픈소스 등이 존재 한다 .
• 대표적인 오픈소스 : VLD
![Page 13: [C++ lab] 10. 메모리 누수 체크](https://reader031.vdocuments.net/reader031/viewer/2022020711/5577d081d8b42ae0418b4de6/html5/thumbnails/13.jpg)
가상 소멸자를 써야하는 이유
![Page 14: [C++ lab] 10. 메모리 누수 체크](https://reader031.vdocuments.net/reader031/viewer/2022020711/5577d081d8b42ae0418b4de6/html5/thumbnails/14.jpg)
가상 소멸자
![Page 15: [C++ lab] 10. 메모리 누수 체크](https://reader031.vdocuments.net/reader031/viewer/2022020711/5577d081d8b42ae0418b4de6/html5/thumbnails/15.jpg)
일반 소멸자
메모리 릭이 발생 !!
![Page 16: [C++ lab] 10. 메모리 누수 체크](https://reader031.vdocuments.net/reader031/viewer/2022020711/5577d081d8b42ae0418b4de6/html5/thumbnails/16.jpg)
일반 소멸자
메모리 릭이 발생 !!
![Page 17: [C++ lab] 10. 메모리 누수 체크](https://reader031.vdocuments.net/reader031/viewer/2022020711/5577d081d8b42ae0418b4de6/html5/thumbnails/17.jpg)
가상 소멸자
원인 다형성으로 인해 , 오버라이딩 된 자식 클래스의
소멸자가 호출 되지 않았기 때문
해결 부모 클래스의 소멸자를 virtual 로 선언 한다 .
가상 생성자는 존재 하지 않는다 !
부모는 자식이 될 수 없다 .