2016-11-21 21 views
0
Compiler: gcc version 4.8.5 20150623 (Red Hat 4.8.5-4) (GCC) 
OS : CentOS 

我有以下代码:使用-fsanitize =地址克++

void 
foo24() 
{ 
    int x; 
    std::cout << x << std::endl; 
} 

int 
main() 
{ 
    foo24(); 
    return 0; 
} 

如果-Wall导通有用于未初始化的存储器的警告。

当我使用-fsanitize = address运行我的可执行编译器时,我没有收到任何此类警告或错误。

任何想法为什么?是否应该只处理特定类型的错误。

回答

0

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