正被停用的激活上下文不是最近激活的

本文介绍了解决程序中出现的除零错误的方法,并通过启用异常处理来快速定位问题,避免因未正确处理激活上下文而导致的问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

最近碰到这个问题,,,,

总是程序执行一段时间才出现错误,很麻烦。。。


一度不想理会这个bug,但是几天后,只要执行一段时间,这个bug就跑出来恶心人。。。


不得已我需要解决。。


VS2005给我的提示信息为:

 Integer division by zero

正被停用的激活上下文不是最近激活的


第一句很简单,除0 了。。

但是那么多代码为哪儿找去。。。


/// Begin -- 引用的文章=====================================

项目程序运行的时候,突然出现这个错误,调用堆栈中的函数,没有一个是自己写的,非常困惑。
  在网上搜索了一下,先找到一个提示,可以在CApp::InitInstance()中禁用ActivationContext:
  afxAmbientActCtx= FALSE;
  这种做法能“解决”问题,但进一步查证后发现这实际上是隐藏问题。
   Junfeng Zhang在自己的博客中给了比较详细的解释(http://blogs.msdn.com/b/junfeng/archive/2006/03/19/sxs-activation-context-activate-and-deactivate.aspx)。基本上出现这个错误,是因为在代码中抛 出了异常,从而跳过了与Context Activation对应的Deactivation,导致后续调用Deactivation时,发现栈中的Context不对。
  而MSDN 论坛中, 网友MMDev在回答别人的帖子(http://social.msdn.microsoft.com/Forums/en-US/vcgeneral/thread/c3feab0f-601b-4ca6-beb2-8d4d615438cc/)时给出了比较好的解决方案:
  在Visual Studio中,选择Debug | Exceptions菜单项,在弹出的对话框中,勾选所有的Win32 Exceptions,这样在Win32的异常抛出时,程序就会中断,这样就有机会在第一时间(异常处理前)看到自己的代码中发生了什么错误导致抛出异常,从而改正错误,消除程序中的隐患。

/// End -- 引用的文章=====================================


关键一点,在Debug | Exception里面勾选 Win32 Exceptions,第一时间处理异常。。


因此我一下子就定位到了该异常除,然后恍然大悟,看到代码犹如醍醐灌顶,快感瞬间像电击一样流过全身。。


就这么easy的解决了这个bug....

哈哈哈 ,,,,,,,,,,


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值