100分 Cannot access memory at address,求解决
int RoleGeneralsData::upgradeGenerals(uint64_t gamerole_id,int32_t generals_code,list<ResourceExp> res_exp_list){
RoleGeneralsInfo* role_generals = ROLECACHEMGR->queryGenerals(gamerole_id,generals_code);
if(role_generals){
if(0 < res_exp_list.size()){
int32_t get_exp = 0;
int32_t cost = 0;
/*消耗升级材料*/
map<int32_t,uint32_t> res_codes_map;
for(list<ResourceExp>::iterator it = res_exp_list.begin();
it != res_exp_list.end();
it ++){
switch((*it).res_code_){
case RES_CODE_JYDJ:{
res_codes_map.insert(pair<int32_t,uint32_t>((*it).res_code_, (*it).res_num_));
get_exp += GameRoleFormula::computeUpgradeExp(role_generals->level_)*(*it).res_num_;
cost += GameRoleFormula::computeUpgradeCost(role_generals->level_)*(*it).res_num_;
}
}
}
/* 查询该游戏角色的详细信息 */
DyncRole* dync_role = ROLECACHEMGR->queryRole(gamerole_id);
if(dync_role){
/*扣除消耗的铜钱*/
if(0 == GameRoleData::changeVCurrency(dync_role,-cost)){
/*先消耗道具,道具扣除成功才消耗货币*/
if(0 == RoleResData::consumeRes(role_generals->role_id_,res_codes_map)){
return generalsExp(gamerole_id,generals_code,get_exp);
}
}
}
}
}
return -1;
}
我打断点,当程序执行到
/*消耗升级材料*/
map<int32_t,uint32_t> res_codes_map;
DEBUG看到的信息 :
Target request failed: Cannot access memory at address 0xeebfcb5400008017.
何解,经常出现定义map局部变量的时候,内存不能访问。是否函数栈的内存溢出?
我用的是linux64位的系统,以前在32位的时候好像这里没有错误。
开发工具用的是eclipse for c++。如果要在link时设置栈大小,eclipse里面如何设置?