问题:
在Win7下编译的程序在XP上无法运行,或者在xp下编译的程序在vista、win7下无法运行。
错误异常
0xC015000F: 正被停用的激活上下文不是最近激活的。
0xC015000F: The activation context being deactivated is not the most recently activated one.
解决方法:
或:
欧了!
在Win7下编译的程序在XP上无法运行,或者在xp下编译的程序在vista、win7下无法运行。
错误异常
0xC015000F: 正被停用的激活上下文不是最近激活的。
0xC015000F: The activation context being deactivated is not the most recently activated one.
解决方法:
CWinAppEx::InitInstance();
afxAmbientActCtx = FALSE;
afxAmbientActCtx = FALSE;
或:
CWinApp::InitInstance();
afxAmbientActCtx = FALSE;
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等内存操作函数改变内存.