C++ Segmentation Fault when using cout in static variable initialization

后端 未结 3 1736
攒了一身酷
攒了一身酷 2021-02-19 16:57

I have a program where I use cout to emit debug information. The code is executed in the initialization of a static global variable, i.e. quite early in the program execution. W

3条回答
  •  遇见更好的自我
    2021-02-19 17:58

    std::cout is an object in static storage. It's guaranteed to be initialized before entering main, but not necessarily before other statics in your code. Seems like the static initialization order fiasco.

    After some digging:

    27.4.2.1.6 Class ios_base::Init

    Init ();

    3) Effects: Constructs an object of class Init. If init_cnt is zero, the function stores the value one in init_- cnt , then constructs and initializes the objects cin, cout, cerr, clog (27.3.1), wcin, wcout, wcerr, and wclog (27.3.2). In any case, the function then adds one to the value stored in init_cnt .

提交回复
热议问题