欢迎来到飞鸟慕鱼博客,开始您的技术之旅!
当前位置: 首页知识笔记正文

内存操作错误导致“0xC015000F被停用的激活上下文最近没有激活”

墨初 知识笔记 84阅读

1 typedef structCSS _ reg _ info 2 { 3 int 32 nsr vid;//固定服务ID,存储服务ID 4 enumDISKROLETYPE nRole//角色5 TCHAR szIP[HMC _ CHAR _ 128];//服务IP 6 tcharszpree _ IP[HMC _ char _ 128];//允许登录的IP 7 INT32 nPermit _ Port//允许登录的端口} * lpcss _ reg _ info9 10结构存储VR11 {

data-mce-mark="1">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等内存操作函数改变内存.

标签:
声明:无特别说明,转载请标明本文来源!