我正在开发一个嵌入式Linux系统(5.10.24),其中运行着几个应用程序。
最近,我发现一个 C 程序有些奇怪。
该 C 程序使用了 SDK 库提供的 API,该 SDK 是用 GNU 构建的-O2
,但默认情况下该 C 程序是用 GNU 构建的-O3
。
然后发现有时(运行数百次中就有一次)C 程序会Segmentation Fault
在 SDK 中的某个函数中触发。
如果 C 程序使用与 SDK 相同的 GNU 构建,则在其数千次运行中-O2
不会触发此类事件。Segmentation Fault
-O2
我在 Google 上搜索了和的区别-O3
,发现有人提到这-O3
可能会引发奇怪而有趣的错误,是真的吗?