Compiler: gcc version 4.8.5 20150623 (Red Hat 4.8.5-4) (GCC)
OS : CentOS
我有以下代码:
void
foo24()
{
int x;
std::cout << x << std::endl;
}
int
main()
{
foo24();
return 0;
}
如果打开-Wall,则会显示未初始化内存的警告。
当我使用-fsanitize = address运行我的可执行编译器时,我没有收到任何此类警告或错误。
知道为什么吗?它应该只处理特定类型的错误。
答案 0 :(得分:0)
AddressSanitizer(使用-fsanitize-address
启用)检查缓冲区溢出,而不是未初始化的内存。对于后者,您应该使用MemorySanitizer(仅适用于Clang,启用-fsanitize=memory
)或Valgrind。