首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VC/MFC >

不调用下部代码在非模式对话框析构函数打断点也能进入呀//?

2013-03-27 
不调用下面代码在非模式对话框析构函数打断点也能进入呀//????既然我们已分配内存就堆,我们必须将它删除时

不调用下面代码在非模式对话框析构函数打断点也能进入呀//????
既然我们已分配内存就堆,我们必须将它删除时,非模式对话框是摧毁,否则我们很快会遇到很大的麻烦与内存泄漏,左,右和中心。当对话框是摧毁了最后一则留言,我们收到处理类是WM_NCDESTROY消息。该OnNcDestroy功能函数是引用,这在原来调用虚拟函数PostNcDestroy 。这正是我们可以delete我们的非模式对话框。 First Call调查的基类的功能函数,以便它是否自己的清理。步骤/方法
  void CModeLess::PostNcDestroy()
  {
  CDialog::PostNcDestroy();
  delete this;
  }

[解决办法]
只要不是重复delete 在哪delete都行。

OnNcDestroy 有两个好处

1. 这个消息不会重复,不会遗漏。所以不会重复delete,也不会遗漏delete。
2. 这个消息是窗口收到的最后一个消息,也就是收到这个消息后,这个窗口就没用了。
这是最早的delete不会出错的地方。

因此大多推荐在这个地方delete.

你那种方式,代码只有那么几个类,因此是无所谓的。
再加个类,引用了非模式窗口。
那么你还要在这个类的析构函数里面再写一次delete。
而在OnNcDestroy,就不需要再写。

热点排行