0
char * input = (char*)malloc(256);

scanf("%s", input);

セグフォルト。なんで?Cの文字列は結構苦労するのですが、ここですべてが終わったような気がします。私は、100k+ SO ユーザーから手紙までの例をたどりました。

4

2 に答える 2

2

バグの原因は次のとおりです。

  • malloc()がメモリの割り当てに失敗した場合、結果をNULLと照合します。
  • scanfからのバッファオーバーランによる256文字以上。
  • 含めるのを忘れてから、<stdlib.h>mallocの結果を型キャストします。詳細はこちら
于 2012-10-07T18:40:48.187 に答える
0

文字列の最後にある末尾のNUL(0バイト)用の十分なスペースを含め、バッファーが十分に大きいことを確認する必要があります。そうしないと、セグメンテーション違反につながる可能性のあるバッファオーバーフローが発生します。

于 2012-10-07T18:40:16.580 に答える