使用-fsanitize = address g ++

时间:2016-11-21 17:46:42

标签: g++ runtime compiler-warnings memory-address

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运行我的可执行编译器时,我没有收到任何此类警告或错误。

知道为什么吗?它应该只处理特定类型的错误。

1 个答案:

答案 0 :(得分:0)

AddressSanitizer(使用-fsanitize-address启用)检查缓冲区溢出,而不是未初始化的内存。对于后者,您应该使用MemorySanitizer(仅适用于Clang,启用-fsanitize=memory)或Valgrind。