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
    关注

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

    评论

报告相同问题?

悬赏问题

  • ¥15 k8s部署jupyterlab,jupyterlab保存不了文件
  • ¥15 ubuntu虚拟机打包apk错误
  • ¥199 rust编程架构设计的方案 有偿
  • ¥15 回答4f系统的像差计算
  • ¥15 java如何提取出pdf里的文字?
  • ¥100 求三轴之间相互配合画圆以及直线的算法
  • ¥100 c语言,请帮蒟蒻写一个题的范例作参考
  • ¥15 名为“Product”的列已属于此 DataTable
  • ¥15 安卓adb backup备份应用数据失败
  • ¥15 eclipse运行项目时遇到的问题