1
我有一個遺留代碼。代碼的工作原理如下:在發生Event1
之後,它會在堆中創建一個窗口對象(繼承自CWindowImpl
類)。發生Event2
後,它會應用窗口中所做的更改,通過調用DestroyWindow()
來關閉它,並通過調用delete
釋放堆中的內存。如何摧毀堆放在堆中的窗口是否正確?
此代碼有問題,因爲它會在處理此窗口的所有消息之前刪除窗口對象。如何確定何時可以安全地爲窗口對象調用delete
?
我發現的唯一解決方案是覆蓋OnFinalMessage
並在那裏致電delete this
。我不喜歡它,因爲它必須保證對象只在堆中創建。有更好的想法嗎?
謝謝。