MFC在debug模式下编译程序时出现了Debug Assertion Failed!

noooooooob 2014-10-05 12:56:37

我写了个贪吃蛇程序,一开始是在debug下编译的,没问题,于是就切换到了release模式下生成了一个程序,之后感觉程序有点问题,就直接在release模式下把代码改了,并且运行成功了,然后我又转换到debug模式下,结果就出现了这个错误
之后我设置了一些断点,发现程序是在运行到InitInstance()函数中的ShowWindow()函数时崩溃的。
我想问的是:我后来改代码的时候跟这个函数一点关系没有为什么会在这个函数上崩溃?这个函数有什么特别之处吗?
还是说我改完以后的代码本身就有问题?
...全文
608 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
noooooooob 2014-10-14
  • 打赏
  • 举报
回复
引用 13 楼 schlafenhamster 的回复:
oldPen 是个"pen" select 回去后, 表示 还回 , 必须是 存在的! 你把它delete 掉了就不存在了! 所以不要管 pOldPen(不要=0,不要delete) , 他是局部变量 ,出函数就没有了.
是这样啊,谢谢啦
schlafenhamster 2014-10-12
  • 打赏
  • 举报
回复
oldPen 是个"pen" select 回去后, 表示 还回 , 必须是 存在的! 你把它delete 掉了就不存在了! 所以不要管 pOldPen(不要=0,不要delete) , 他是局部变量 ,出函数就没有了.
noooooooob 2014-10-12
  • 打赏
  • 举报
回复
引用 11 楼 lis2012 的回复:
要先把 画笔资源还原成以前那个oldpen然后再删除你new的那个pen
额,我上面没写清楚,我把那段代码放上来吧 我已经把画笔还原成了原来的oldPen,但是在最后delete oldPen就会报错,只能改成上面那句oldPen=NULL;
lis2012 2014-10-11
  • 打赏
  • 举报
回复
要先把 画笔资源还原成以前那个oldpen然后再删除你new的那个pen
schlafenhamster 2014-10-11
  • 打赏
  • 举报
回复
CPen *pPen=new CPen pPen->DeleteObject(); delete pPen,
noooooooob 2014-10-11
  • 打赏
  • 举报
回复
没人了么。。。
noooooooob 2014-10-10
  • 打赏
  • 举报
回复
引用 4 楼 jennyvenus 的回复:
showwindow时有些变量还没初始化,mfc程序有这种机制,调试起来实在是大好事。
哦忘了4楼这位了,也非常感谢哦
noooooooob 2014-10-10
  • 打赏
  • 举报
回复
引用 1 楼 lis2012 的回复:
你检查一下你的 对话框的初始化函数里面是不是修改了内容,调试的时候设置几个断点
引用 3 楼 jiangsheng 的回复:
ASSERT是抓代码bug的,有ASSERT的话说明代码有质量问题,不应该发布Release版。
楼上的两位真是帮了大忙了,非常感谢! 我在CView类的初始化代码中设置了几个断点,发现确实是初始化的问题,原来是因为我在构造函数中发送了消息,我把发送消息的语句删了就没问题啦! 后来又出现了问题:在画图的时候经常会定义一些画刷啊,画笔啊之类的指针,一般我都是这么干的:CPen myPen=new CPen 然后用完后我就会来一句:delete myPen,发现程序居然会报错!我把这个delete语句删除就没问题了,这是为什么呢?难道不需要释放吗? 而且我观察到用来申请内存的new貌似和平常的不一样,是紫色的,就像宏定义一样,但我在new上右键又转不到类似宏的定义上去,这又是为什么呢? 如图最后一句,new是紫色的,而不像一般的关键字一样
lx624909677 2014-10-08
  • 打赏
  • 举报
回复
点重试,然后看下断在哪一行
shen_wei 2014-10-08
  • 打赏
  • 举报
回复
Rebuild的在试试看。。
用户 昵称 2014-10-08
  • 打赏
  • 举报
回复
showwindow时有些变量还没初始化,mfc程序有这种机制,调试起来实在是大好事。
蒋晟 2014-10-08
  • 打赏
  • 举报
回复
ASSERT是抓代码bug的,有ASSERT的话说明代码有质量问题,不应该发布Release版。
lis2012 2014-10-05
  • 打赏
  • 举报
回复
你检查一下你的 对话框的初始化函数里面是不是修改了内容,调试的时候设置几个断点
schlafenhamster 2014-10-05
  • 打赏
  • 举报
回复
代码问题 打开"afxwin2.inl" 看 第42 行.

16,472

社区成员

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

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

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