0xC015000F: 正被停用的激活上下文不是最近激活的。

问题:
在Win7下编译的程序在XP上无法运行,或者在xp下编译的程序在vista、win7下无法运行。
错误异常 
0xC015000F: 正被停用的激活上下文不是最近激活的。
0xC015000F: The activation context being deactivated is not the most recently activated one.


解决方法:

CWinAppEx::InitInstance();
afxAmbientActCtx = FALSE;

或:

CWinApp::InitInstance();
afxAmbientActCtx = FALSE;


按理说禁用Activation Context不是标准的作法,但这样做确实能解决问题。没有更好的办法之前,这样用一下也无妨。


文章来源: http://www.cppblog.com/mythma/archive/2011/03/20/sxs-activation-context.html


从本人程序中出现这个错误的原因是: 一个未分配内存的对象,调用其成员函数, 内存操作错误导致. (一步步跟踪发现) 异常出现的位置和操作内存的代码相隔十万八千里.所以建议从按照程序的路径跟踪下去.

结论: 这个问题出现应该首先查自己的代码.(对于我自己的操作指针没有检查是否为空.导致该问题出现)一般是出现了错误.按照上述做法虽然 不会提示该异常,但是有错误的程序总是会在其他时间出错.


再:转一个 内存操作导致的该异常: 来源:http://www.cnblogs.com/gaowg/archive/2012/12/11/2812873.html


内存操作错误的导致的 “0xC015000F 正在被停用的激活上下文不是最近激活的”

复制代码
 1 typedef struct CSS_REG_INFO
 2 {
 3     INT32 nSRVID;                    //固定服务ID, 存储服务ID
 4     enumDISKROLETYPE nRole;            //角色
 5     TCHAR szIP[HMC_CHAR_128];        //服务IP
 6     TCHAR szPermit_IP[HMC_CHAR_128];//允许登录的IP
 7     INT32 nPermit_Port;            //允许登录的端口
 8 }*LPCSS_REG_INFO;
 9 
10 struct STORAGESVR
11 {
12     CSS_REG_INFO cssInfo;
13     std::list<DISK_REG_INFO> diskInfo;
14 };
15 
16 typedef std::map<int, STORAGESVR> STORAGESVR_MAP;
17 STORAGESVR_MAP m_mapCSSInfo;
18 
19 void CStoragePolicyMgt::_AddStorageSvr(LPCSS_REG_INFO pCSSRegInfo)
20 {
21     if (pCSSRegInfo == NULL)
22     {
23         return; 
24     }
25     STORAGESVR storageSvr;
26     ZeroMemory(&storageSvr, sizeof(STORAGESVR ));
27     memcpy(&storageSvr.cssInfo, pCSSRegInfo, sizeof(CSS_REG_INFO));
28     m_mapCSSInfo[pCSSRegInfo->nSRVID]=storageSvr;
29 
30     HMCDAL_GetRegDiskList(fnGetRegDiskCallback, this, pCSSRegInfo->nSRVID);
31 }
复制代码
ZeroMemory(&storageSvr, sizeof(STORAGESVR ));
这行导致了内存越界, 在 m_mapCSSInfo[pCSSRegInfo->nSRVID]=storageSvr 操作时引起了一个无法预料的异常 "正在被停用的激活上下文不是最近激活的".
结构体加入了list对象后,自动转换为C++类, 内存布局已经不是简单的结构体内存模式, 已经不能用简单的memset等内存操作函数改变内存.
欧了!


  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值