【发布时间】:2012-02-23 18:56:55
【问题描述】:
我的程序因指针无效而崩溃。当我用它运行 gdb 时,它会告诉我导致崩溃的无效指针的地址。它崩溃的行是
delete some_pointer;
但是当我在删除指针之前打印出指针时,地址与gdb告诉我的那个地址不一样是无效的。那么我在崩溃时删除的 some_pointer 不是导致问题的指针吗? gdb 说 -
free(): invalid pointer: 0xbfffea84 ***
那么为什么每次使用不同的地址时它都会崩溃呢?我只是想确保我在这里的想法是正确的。
【问题讨论】:
-
为什么在使用
delete的时候标记C? -
some_pointer的类型是什么? -
每次运行的地址都会不同。所有地址都是。
-
可能希望显示一些其他代码,例如
some_pointer的声明和分配,以使这一点更清楚。例如,如果您的指针未初始化,您可能会遇到类似这样的情况... -
我们需要更多的代码,我认为从 gdb 中分离出来的推理是不重要的。你很可能有逻辑/实现错误。
标签: c++ pointers crash gdb free