gpt4 book ai didi

c++ - "this"GDB 回溯中的指针变化

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:58:12 24 4
gpt4 key购买 nike

我正在检查核心转储,并注意到在一个帧中的“this”指针与下一帧(在同一线程中)不同。不仅仅是一点点不同,它从 0x8167428 变成了 0x200。

我不太精通 GDB,但这对我来说似乎不对。这是有问题的吗?如果是,原因可能是什么?

最佳答案

如果在不同的对象上调用下一帧中的函数(即使对象是同一类型),则 this 指针可以在 gdb 跟踪中的帧之间改变,因为这是为了具体实例。这可能不是您的问题。

0x200 不是 this 的有效值,几乎可以肯定表示某种类型的内存损坏。 this 指针有时存储在堆栈中并作为不可见的第一个参数传递给函数。因此,如果您损坏了堆栈(通过越界写入另一个变量),您可能会看到 this 指针已损坏。

0x200 本身很有趣。因为它非常接近 0,但实际上不是 0,所以它表明您正在查看的实例可能是位于 的另一个对象或数组的一部分从该对象/数组开始的 0x200 字节,并且该对象/数组的地址实际上是 NULL。查看您的代码,您应该能够很容易地找出哪个对象已设置为 NULL,这导致报告 0x200

关于c++ - "this"GDB 回溯中的指针变化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2556945/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com