我在很多地方看到人们在编译 C/C++ 代码时经常使用选项 -fomit-frame-pointer
我想知道,使用该选项安全吗?它有什么用?
非常感谢,最诚挚的问候。
最佳答案
该选项是安全的,但会使调试变得更加困难。通常,C 编译器输出的代码在常规寄存器(x86 上的 ebp
)中存储指向函数堆栈帧的指针。调试器使用它来打印局部变量内容和其他此类信息。 -fomit-frame-pointer
标志指示 gcc 不要理会该寄存器。在某些情况下,这会产生轻微的性能提升,主要是由于减少了代码占用空间(这对缓存更好)和额外的可用寄存器(尤其是在 32 位模式下的 x86 上,众所周知,寄存器不足)。
关于c++ - -fomit-frame-pointer,使用它安全吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2334396/