c语言指针破坏,c – “这个”指针在堆栈跟踪中被破坏

我看过

this线程.我的情况略有不同,我正在努力弄清楚“这个”指针是否被破坏.

我使用Qt 4.6.2框架,使用自己的QTreeView模型.我得到的回溯(86帧长,有很多递归,这就是为什么我没有粘贴整个事情,在这个pastebin只涉及他们的代码.

它最终在QBasicAtomicInt :: deref中的一些汇编器上出现故障,但很明显,它已经进一步下降,这三个框架证明了这一点:

#15 0x01420fd3 in QFrame::event (this=0x942bba0,e=0xbf8eb624) at widgets/qframe.cpp:557

#16 0x014bb382 in QAbstractScrollArea::viewportEvent (this=0x4,e=0x93f9240) at widgets/qabstractscrollarea.cpp:1036

#17 0x0156fbd7 in QAbstractItemView::viewportEvent (this=0x942bba0,event=0xbf8eb624) at itemviews/qabstractitemview.cpp:1610

在框架17中,这是0x942bb0.在框架16中,这应该是相同的,在框架17中,它调用其祖先实现相同的方法.但是这变成0x4.

有趣的是,在框架15(再次,框架16已经称其祖先执行相同的功能),’this’指针恢复为0x942bba0.

如果您查看完整回溯的贴图,您可能会看到一些“优化的值”.我已经通过优化编译了应用程序;我现在有gcc设置为-g3 -O0,所以当下次发生时,我可能会有更多的东西.但是,当然现在我不能让它崩溃 – 这是一个相当困难的错误发生(但是非常重要的修复),所以我不认为这太可疑了.

给定的优化是,这个指针= 0x4不寻常或绝对错误?奇怪的是,在任何这些viewportEvent框架中没有真正的代码 – 它们只是对事件类型进行切换,它通过switch语句进行切换,并返回其祖先的实现.

Valgrind似乎并没有抛出任何问题,尽管我还没有在Valgrind中崩溃.

有没有人看过这个行为?可能是什么原因造成的?

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值