我在许多地方看到人们在编译C / C ++代码时经常使用选项-fomit-frame-pointer
,我想知道,该选项的使用是否安全?它用于什么?
非常感谢,最诚挚的问候。
答案 0 :(得分:11)
该选项是安全的,但使调试更难。通常,C编译器输出存储在传统寄存器(x86上为ebp
)的代码,该代码指向函数的堆栈帧。调试器使用它来打印出本地变量内容和其他此类信息。 -fomit-frame-pointer
标志指示gcc不要打扰该寄存器。在某些情况下,这可以带来轻微的性能提升,主要是由于减少了代码占用空间(对缓存更好)和额外的可用寄存器(特别是在32位模式下的x86,这是众所周知的寄存器上的缺点)。 p>
答案 1 :(得分:2)
只要您的代码不依赖于未定义的行为,那么它就非常安全。它可能会导致未定义的行为错误出现。