-fomit-frame-pointer,使用它是否安全?

时间:2010-02-25 13:54:10

标签: c++ c optimization gcc

我在许多地方看到人们在编译C / C ++代码时经常使用选项-fomit-frame-pointer,我想知道,该选项的使用是否安全?它用于什么?

非常感谢,最诚挚的问候。

2 个答案:

答案 0 :(得分:11)

该选项是安全的,但使调试更难。通常,C编译器输出存储在传统寄存器(x86上为ebp)的代码,该代码指向函数的堆栈帧。调试器使用它来打印出本地变量内容和其他此类信息。 -fomit-frame-pointer标志指示gcc不要打扰该寄存器。在某些情况下,这可以带来轻微的性能提升,主要是由于减少了代码占用空间(对缓存更好)和额外的可用寄存器(特别是在32位模式下的x86,这是众所周知的寄存器上的缺点)。 p>

答案 1 :(得分:2)

只要您的代码不依赖于未定义的行为,那么它就非常安全。它可能会导致未定义的行为错误出现。