Memory Sanitizer使用ifstream的未初始化值

时间:2017-12-11 02:38:18

标签: c++ c++11 clang memory-sanitizer

这是一个重现的最小例子 -

#include <iostream>
#include <string>
#include <fstream>

using namespace std;

int main() {
    ifstream names("lol.txt");
    if(!names) {
        cerr << "Not found\n";
        return -1;
    }

    cout << "Done\n";
}

使用 - clang++ lol.cpp -g -fsanitize=memory进行编译,然后运行它会产生 -

==2327==WARNING: MemorySanitizer: use-of-uninitialized-value
    #0 0x55ece5b5f4c4 in main /home/agauniyal/lol.cpp:9:9
    #1 0x7f5ab5a45f49 in __libc_start_main (/usr/lib/libc.so.6+0x20f49)
    #2 0x55ece5ae3b99 in _start (/home/agauniyal/a.out+0x1ab99)

SUMMARY: MemorySanitizer: use-of-uninitialized-value /home/agauniyal/lol.cpp:9:9 in main
Exiting

指向 - if(!names) {行。与-stdlib=libc++同时发生。

0 个答案:

没有答案