기존 코드가 있습니다. 코드는 다음과 같이 작동합니다. Event1
이 발생한 후 힙에 창 개체 (CWindowImpl
클래스에서 상 속됨)가 만들어집니다. Event2
이 발생하면 창에서 변경 한 내용이 적용되고 DestroyWindow()
을 호출하여 닫고 delete
을 호출하여 힙의 메모리를 해제합니다.힙에 배치 된 창을 올바르게 파괴하는 방법은 무엇입니까?
이 코드는이 윈도우에 대한 모든 메시지가 처리되기 전에 윈도우 객체를 삭제하기 때문에 버그가 있습니다. 창 개체에 delete
을 호출하는 것이 안전 할 때를 확실히 알 수있는 방법은 무엇입니까?
유일한 해결책은 OnFinalMessage
을 무시하고 delete this
으로 전화하는 것입니다. 나는 그것이 객체가 힙에서만 생성된다는 것을 보증해야하기 때문에 그것을 좋아하지 않는다. 더 좋은 아이디어가 있습니까?
감사합니다.