言語は C です。関数の引数として char* 型の配列 (char *array[] / char** 配列) があり、それらすべてを次のように行ごとに出力したいと考えています。
while (*array) {
printf("%s\n", *array);
printf("after last print");
array++;
}
何らかの理由で、特定の入力ですべての値を出力することができますが、最後の *array が出力されるとすぐにクラッシュします。したがって、最後のprintfの後、「最後の印刷後」はもう印刷されません。残念ながら、私は gdb なしで netbeans C をサポートする Windows 7 を使用しています。netbeans にインストールしようとしたときにいくつか問題がありましたが、それはまた別の話です。
まず第一に、何が原因である可能性がありますか?次に、gdb なしでこの動作を最適にデバッグするにはどうすればよいでしょうか? 問題をデバッグして解決するのに役立つ回答があれば、それだけでもポイントを付与します。クラッシュの原因となった関数引数に関連する背景情報: strtok を使用して、char* 文字列から char** arr を生成しました。区切り文字としてスペースが使用されました。
編集:
追加情報: 同じ関数内で最後の *array を印刷しようとすると、正常に動作し、プログラムは正常に続行されます。したがって、これは機能します:
printf("%s\n", array[4]);
私のテストケースでは、NULL の前の最後のインデックスはたまたま 4 です。しかし、前に見たように同じことがループ内で行われると、それを印刷することはできますが、すぐにクラッシュし、2 行目が印刷されなくなります。