현재 하고 있는 프로젝트에서 새로운 다이얼로그를 리소스 추가해서 두개의 창으로 진행중에 있다.

 

하지만 여기서 종료시 치명적인 문제점이 발생하는데..

 

delete 했을때 OnDestroy() 로 들어가지 않는것이었다.

 

그로 인해 메모리 누수가 주루루......

 

이를 해결하는 방법이 꼼딱마 님의 블로그에 고스란히 적혀있었다.

 

링크 : http://blog.naver.com/PostView.nhn?blogId=teramarine&logNo=150030061661&redirect=Dlog&widgetTypeCall=true

 

말을 좀 인용하면, 새로 생성된 다이얼로그를 바로 delete 하게 되면 내부 핸들은 삭제가 되지않고 남아있게 되어 밑에와 같은 로고가 뜬다고 한다.

 

Warning: calling DestroyWindow in CDialog::~CDialog --
 OnDestroy or PostNcDestroy in derived class will not be called.

 

그래서 프로그램 종료시 먼저 DestroyWindow(); 를 호출 해주면 깔끔히 사라지고 메모리 누수도 깔끔히~

 

소스코드도 발췌하면..

 

if( m_pTempDialog != NULL )

{

m_pTempDialog ->DestroyWindow();

delete m_pTempDialog;

m_pTempDialog = NULL;

}

 

 

 

Posted by Tommy™
,