我的代码中存在分段错误,因此我在可疑方法上放置了许多 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
} ...
如果该方法被调用并且没有从 T1 和之前打印的每个 cout 的段错误。在 ++tmp 行中是段错误,因为 ostatnioUlozony 为 NULL,当方法转到 T2 时,每个没有 first 的 cout 都没有打印。为什么?
我正在使用 Netbeans ang gcc,我在 Netbeans 中找到了带有调试功能的“segfault line”,但在我使用之前,我花了一些时间来添加 cout 线和运行程序。
非常感谢,