在分段故障上优化了价值

use*_*644 3 c++

可能重复:
gdb中的<value optimized out>是一个问题吗?

嗨,

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

谢谢.

Sta*_*fan 6

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

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

在一个侧面说明,对于C++,建议使用new,delete,new[]delete[].

您需要提供更多上下文.

  • 通常是正确的,但是当某些东西被"优化出来"时,并不总是意味着它通过了一个寄存器.有时候,这个价值已经被考虑到了这个特定价值在任何实际意义上都不存在的程度. (4认同)