在分段故障上优化了价值

时间:2010-07-08 16:23:24

标签: c++

  

可能重复:
  Is <value optimized out> in gdb a problem?

您好,

我还在学习高级c ++编程。我在C ++代码中遇到分段错误。在使用gdb时,故障点是在解除分配期间,解除分配器(malloc)的一个参数是一个优化的值(av =值优化输出)。我的问题是,这个条件(值是否优化)导致解除分配器中的分段错误?我问这个的原因是因为我能够打印这些值,但gdb因某些原因无法读取它们。

感谢。

2 个答案:

答案 0 :(得分:6)

不,优化的值只是意味着优化器通过寄存器传递参数,这意味着gdb无法看到它的值。如果使用-O0进行编译,则会在gdb中看到该值。

错误可能是你的错误。例如。释放已经被释放的地址,或释放从未分配过的地址。

另外,对于C ++,建议使用newdeletenew[]delete[]

您需要提供更多背景信息。

答案 1 :(得分:1)

优化的值不能引入段错误。这意味着在调用之后没有使用malloc的参数,所以不是将它存储在调用者的堆栈帧中,而是使用寄存器将其直接传递给malloc,因此gdb无法显示内存地址(它没有存储在内存中)