?
leanderlaepple schrieb:
ausgabe:
felix@linux-k3ox:~/ich_lerne_c++/selber/radio> ./program
Argnum:1
<test>args[0] = "./program";</test>
Speicherzugriffsfehler
felix@linux-k3ox:~/ich_lerne_c++/selber/radio>
der "interessante" Teil ist in Z.82-84:
for(int i = 0; i < arg_num; i++) {
cout << "<test>";
cout << "args[" << i << "] = \"" << args[i] << "\";";
cout << "</test>"<< endl;
}
string s = "TEST";
cout << s;
es werden alle Argumente ausgegeben, die dem Programm übergeben wurden, es wird kein weiteres mal "<test>" ausgegeben, was ja heißt, dass es jedes Mal gelingt, auf die Array-Felder zuzugreifen, aber der string "TEST" wird nicht mehr ausgegeben.... Ich kann mir nicht erklären, wieso.
Dass "TEST" nicht mehr ausgegeben wird, wird daran liegen, dass er (und vermutlich auch einige Ausgaben danach) nicht sofort auf die Konsole, sondern in std::cins Streambuffer oder den Konsolenbuffer geschrieben werden und das Programm abstürzt, bevor sie angezeigt werden. Schreib mal
cout << s << flush;
, dann wird deine Ausgabe anders aussehen.
Meine Vermutung ist, dass der Fehler daher kommt, dass du den zweiten Parameter der Callback-Funktion als Anzahl der Zeilen im Ergebnis missverstehst, wo es um die Anzahl der Spalten geht.