我在主程序中NEW了一个给模态的对话框,并让其显示,在非模态对话框中new了一个CPictureView(我自己从CView派生的类)的对象m_PictureView,并把它嵌入对话框中,最后重载了非模态对话框的PostNcDestroy()函数,在该函数中delete this、delete m_PictureView,当我关闭程序时,程序执行到delete m_PictureView时就会出错,如果不加这句话就不会错,请问为什么?
调试欢乐多
另外销毁前做下判断
请仔细检查看看,有可能在某个地方你 用另外一个指针p访问了m_PictureView 所指的空间,之后执行了delete p这样m_PictureView所指定的区域就相当于已经被释放了。
需要特别注意的一点时,使用向导生成的处理函数OnDestroy会先调用父类的OnDestroy,然后在下面让你增加代码。你需要在此函数的最前面做处理,最后再调用父类的OnDestroy。
因为cview类属于可自动销毁的窗口,其PostNcDestroy()函数本身就含有delete this代码,所以当我关闭主程序,最先得到执行的是CPictureView类的PosNcDestroy()函数,这时它已经销毁了自己,然后执行的时其父窗口即对话框的PostNcDestroy()函数,此时m_PictureView对象已经被delete掉了,再delete一次必然会引起错误。
谢谢大家的帮助...