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里面如何设置?
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里面如何设置?
...全文
相关推荐
IBMPCAT硬件架构与动作原理.pptx
ISA总线包含了如NMI(Non-Maskable Interrupt)控制、中断请求(INTR)和DMA(Direct Memory Access)等信号,允许外设直接访问内存,提高数据传输效率。
SDRAM高手进阶_原理_时序
### SDRAM高手进阶_原理_时序#### SDRAM的重要性及基础知识SDRAM(Synchronous Dynamic Random Access Memory,同步动态随机存取存储器)作为计算机系统中的关键组件之一
SDRAM原理介绍
### SDRAM原理详细介绍#### 一、SDRAM概述与应用**SDRAM**(Synchronous Dynamic Random Access Memory),即同步动态随机存取存储器,是一种广泛应用于嵌入式系统中的高性能存储器
ALTERA DDR SDRAM controller white paper
DDR SDRAM(Double Data Rate Synchronous Dynamic Random Access Memory)是一种具有高速数据传输能力的动态随机存取存储器。
CCIE-MLS.pdf
- 然后创建一个access-map并匹配MAC地址列表:`Vlan access-map wolf 20 Match mac address A action [forward|drop]`。


