100分 Cannot access memory at address,求解决

allan0527 2014-06-06 11:11:04
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里面如何设置?
...全文
1845 3 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
FeelTouch Labs 2014-06-12
  • 打赏
  • 举报
回复
1, 设置Eclipse内存使用情况 修改eclipse根目录下的eclipse.ini文件 -vmargs //虚拟机设置 -Xms40m -Xmx256m -XX:PermSize=128M //非堆内存设置 -XX:MaxPermSize=256M 2, JVM内存设置 打开eclipse window-preferences-Java -Installed JREs -Edit -Default VM Arguments 在VM自变量中输入:-Xmx128m -Xms64m -Xmn32m -Xss16m 3, Tomcat内存设置 打开Tomcat根目录下的bin文件夹,编辑catalina.bat 修改为:set JAVA_OPTS= -Xms256m -Xmx512m 在以上的转载内容中有一条:Xms是默认的虚拟机内存大小,Xmx是最大内存,Xss是堆栈的大小,16就足够了。 在设置的时候可以选择:工程运行的标号有个下三角--Run Configuration--Vm设置--按照参数设置即可
allan0527 2014-06-11
  • 打赏
  • 举报
回复
我将map换成vector就不报错了。。。
CyberLogix 2014-06-06
  • 打赏
  • 举报
回复
访问的地址越界了,呵呵

684

社区成员

发帖
与我相关
我的任务
社区描述
智能路由器通常具有独立的操作系统,包括OpenWRT、eCos、VxWorks等,可以由用户自行安装各种应用,实现网络和设备的智能化管理。
linuxpython 技术论坛(原bbs)
社区管理员
  • 智能路由器社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧