非模态对话框在PostNcDestroy()中delete this报错

天鹅梦 2005-09-04 12:25:16
我使用一个非模态对话框,在主程序中new一个指针,然后Create,再Show,一切正常,结果退出时,在PostNcDestroy函数中的delete this这句老是通不过,这是怎么回事?
...全文
947 17 打赏 收藏 转发到动态 举报
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
milozy1983 2005-09-04
  • 打赏
  • 举报
回复
有次我在OnDestroy里delete this也出过错,把delete this去掉看看
goodboyws 2005-09-04
  • 打赏
  • 举报
回复
同意楼上,应该是析构函数的问题
dirdirdir3 2005-09-04
  • 打赏
  • 举报
回复
在析构函数里面做了什么?
老夏Max 2005-09-04
  • 打赏
  • 举报
回复
OnDestroy中处理,不能使用delete this,使用CloseWindow,使用Create的时候返回的句柄作为参数。
天鹅梦 2005-09-04
  • 打赏
  • 举报
回复
但以前俺一直这样用着,很好用的,不知这次为啥就不行,这次对话框主要是负责和oracle数据库交互,难道oracle接口中有什么细节影响?我想不通
天鹅梦 2005-09-04
  • 打赏
  • 举报
回复
好的,我明天把错误拷贝回来贴上,印象中开始是什么 called by user break point,然后按几下F5就变成了Unhandled exception in MyApp.exe:0xC0000005:Access Violation,从栈里找出报错的地方就是PostNcDestroy()函数里的delete this;,事实上我在delete this之前,重载了OnCancle()函数,并在该函数里只写了一句DestroyWindow();,销毁窗体。
dxj1234 2005-09-04
  • 打赏
  • 举报
回复
光说通不过有什么用,把报的错误贴出来撒
vcmute 2005-09-04
  • 打赏
  • 举报
回复
如果使用了lib,注意和lib的Runtime Library一致,如都是MT
天鹅梦 2005-09-04
  • 打赏
  • 举报
回复
另外,我这个对话框类里没有析构函数,非模态对话框,在WM_DESTROY的消息里就可以做释放之类的事,没必要析构函数
天鹅梦 2005-09-04
  • 打赏
  • 举报
回复
在主程序中new一个非模态对话框指针,然后Create,再Show,让其工作,最后在对话框的PostNcDestroy()中用delete this的方法释放曾在主框架中分配的内存,我一直都是这样做的,而且都没有问题,偏偏这个有问题,所以我想不通,故发贴问问,一般什么情况会导致delete this报错
hoya5121 2005-09-04
  • 打赏
  • 举报
回复
楼上的方法很多。。。
i_noname 2005-09-04
  • 打赏
  • 举报
回复
本着谁创建,谁释放的原则,最好把delete也放回主程序里面
yongdu 2005-09-04
  • 打赏
  • 举报
回复
OnDestory内delete this没问题,关键是你释放时其它地方出毛病了,导致了析构时出错。你他细跟跟析构,看错在哪。
社会栋梁 2005-09-04
  • 打赏
  • 举报
回复
在父窗体中调用非模式对话框的void CNewDlg::Quit()
社会栋梁 2005-09-04
  • 打赏
  • 举报
回复
你应该自定义一个退出时调用的函数
void Quit()
{
CDialog::OnDestory();
delete this;
}
不会有泄露
社会栋梁 2005-09-04
  • 打赏
  • 举报
回复
为什么要用PostNcDestroy呢?OnDestroy()后delete this也可以啊
天鹅梦 2005-09-04
  • 打赏
  • 举报
回复
非模态,没用到析构,如果把delete this 去掉,会内存泄漏

16,470

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧