rangzidanfeiba 2017-01-12 13:05 采纳率: 0%
浏览 1452
已结题

c++指针赋值后地址错误

下面是gdb调试结果, 注意看p &copyConfig->roleDefine 显示地址是 0x3116030,赋值给引用后(const RoleDefineVector *) 0x311602c,赋值前后值竟然变化了, 这是怎么回事呢?求大侠指教

296 if ( !copyConfig) {
(gdb) p copyConfig
$1 = (CopyConfigBase ) 0x3115fe8
(gdb) p &copyConfig->roleDefine
$3 = (RoleDefineVector *) 0x3116030
(gdb) n
299 Map
scene = MapManager::getInstance().loadMap(copyConfig->mapid);
(gdb) n
300 if ( !scene ) {
(gdb) p scene
$4 = (Scene ) 0x7ffeb406b848
(gdb) n
303 const RoleDefineVector& ndv = copyConfig->roleDefine;
(gdb)
305 HangCopy
copy= new HangCopy( copyConfig, scene);
(gdb) p ndv
$5 = std::vector of length 38654705664, capacity 68719476736 = {Cannot access memory at address 0x311748000000000
(gdb) p &ndv
$6 = (const RoleDefineVector *) 0x311602c
(gdb) dis

  • 写回答

4条回答

  • threenewbee 2017-01-12 16:00
    关注

    看下是不是访问别的变量引起数组越界了。

    评论

报告相同问题?

悬赏问题

  • ¥20 有关区间dp的问题求解
  • ¥15 多电路系统共用电源的串扰问题
  • ¥15 slam rangenet++配置
  • ¥15 有没有研究水声通信方面的帮我改俩matlab代码
  • ¥15 对于相关问题的求解与代码
  • ¥15 ubuntu子系统密码忘记
  • ¥15 信号傅里叶变换在matlab上遇到的小问题请求帮助
  • ¥15 保护模式-系统加载-段寄存器
  • ¥15 电脑桌面设定一个区域禁止鼠标操作
  • ¥15 求NPF226060磁芯的详细资料