【发布时间】:2019-11-14 20:57:15
【问题描述】:
在编译 C 程序时一直在使用fsanitize=address,以便跟踪 seg 错误大约一年了。我时不时会遇到一个奇怪的行为,如果编译 without fsanitize=address 我的程序会出现段错误,但是当我编译 with fsanitize=address 时,这个段错误就会消失。我浏览了网络,但无法弄清楚为什么会发生这种情况。
我知道address sanitizer 不是一个完美的程序,但只是不知道它为什么会有这种行为。
【问题讨论】:
-
当您的程序中有未定义的行为时,它或编译器选项中的任何更改都会改变观察到的行为。
-
未定义的行为是未定义的。
标签: c gcc address-sanitizer