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和运行程序.
非常感谢,
您需要使用std::flush或刷新输出流std::endl(这也会产生换行符),否则您无法保证看到输出:
cout << " second task " << std::flush;
Run Code Online (Sandbox Code Playgroud)
不过,你有不确定的行为,如果你增加一个奇异的迭代器(其空指针),所以这是唯一可能的工作.就C++而言,你的程序可以发射核导弹.
| 归档时间: |
|
| 查看次数: |
3161 次 |
| 最近记录: |