内存操作错误的导致的 “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等内存操作函数改变内存.

转载于:https://www.cnblogs.com/gaowg/archive/2012/12/11/2812873.html

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值