gdb与cout输出变量地址不一致,vector resize崩溃排查求助
交叉编译环境下vector resize段错误及变量地址不一致问题求助
问题现象
- 排查vector resize触发的segmentation fault时,发现给局部变量
m_ptr赋值后,局部vector变量m_d的大小被覆盖,最终执行resize操作时触发段错误 - 用
cout打印的局部变量地址和gdb调试输出的地址完全矛盾:- cout输出结果:
address m_ptr 0xbefffca0
address m_d 0xbefffcac - gdb调试输出:
(gdb) print &m_ptr $2 = (machine **) 0xbefffcac (gdb) print &m_d $4 = (std::vector<unsigned char, std::allocator<unsigned char> > *) 0xbefffcac
- cout输出结果:
- 交叉编译环境中,增减头文件会影响问题是否出现
已尝试的排查操作
- 使用gdb断点调试并监视变量变化
- 新建项目尝试复现问题
- 通过注释/添加头文件测试问题触发条件
求助需求
- 分析该问题的根本原因
- 提供后续的排查方向与方法
内容的提问来源于stack exchange,提问作者noCPPie
相关产品推荐
相关产品推荐

