在分段错误之前缺少cout

Wez*_*ato 4 c++ gcc netbeans cout segmentation-fault

我的代码中有一个分段错误,因此我在可疑方法上放了许多cout来定位到哪里.

bool WybierajacyRobot::ustalPoczatekSortowania(){
    cout << "ustal poczatek sortowania: " << poczatekSortowania << endl ;
    list< Pojemnik >::iterator tmp;
    cout << "LOL"; // <-- this cout doesn't print when segfault

    if (!poczatekSortowania){   // <- T1
        cout << "first task" ;
        tmp = polka.begin();
    }
    else{   // <-- T2
        cout << " second task " ;// <-- this cout doesn't print when segfault
        tmp = ostatnioUlozony;
        cout << " debug cout " ; // <-- this cout doesn't print when segfault
        ++tmp; // <-- segfault
    } ...
Run Code Online (Sandbox Code Playgroud)

如果该方法被调用并且没有来自T1和之前的每个cout的段错误.在行++中,tmp是段错误,因为ostatnioUlozony为NULL,当方法转到T2时,每个cout没有先打印.为什么?

我正在使用Netbeans ang gcc,我在Netbeans中找到了调试的"段错误",但在我使用之前,我花了一些时间来添加cout line和运行程序.

非常感谢,

Jos*_*eld 8

您需要使用std::flush或刷新输出流std::endl(这也会产生换行符),否则您无法保证看到输出:

cout << " second task " << std::flush;
Run Code Online (Sandbox Code Playgroud)

不过,你有不确定的行为,如果你增加一个奇异的迭代器(其空指针),所以这是唯一可能的工作.就C++而言,你的程序可以发射核导弹.