【发布时间】:2012-08-29 03:20:00
【问题描述】:
我有一个旧代码。代码是这样工作的:在Event1 发生之后,它会在堆中创建一个窗口对象(继承自CWindowImpl 类)。在Event2 发生后,它会应用在窗口中所做的更改,通过调用DestroyWindow() 将其关闭,并通过调用delete 释放堆中的内存。
此代码有问题,因为它在处理此窗口的所有消息之前删除了窗口对象。如何确定何时为 window 对象调用 delete 是安全的?
我发现的唯一解决方案是覆盖OnFinalMessage 并在那里调用delete this。我不喜欢它,因为它必须保证对象只在堆中创建。有更好的想法吗?
谢谢。
【问题讨论】: