コードにセグメンテーション違反があったため、疑わしいメソッドに多くの計算を実行して、場所をローカライズしました。
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
} ...
メソッドが呼び出され、segfault がない場合、T1 以前のすべての cout が出力されました。ostatnioUlozony が NULL であるため、行 ++tmp は segfault です。メソッドが T2 に移動すると、最初のなしですべての cout が出力されませんでした。なんで?
私は Netbeans と gcc を使用しています。Netbeans のデバッグで「segfault 行」を見つけましたが、使用する前に、cout 行の追加とプログラムの実行に時間を費やしています。
どうもありがとう、