0

Cyclone: A Safe Dialect of C by Jim Trevor らを読んでいます。すべてプログラミング言語クラス用です。著者は、これを呼び出すgetc(null)とセグメンテーション違反が発生する可能性があると述べています。これは、C 標準ではこの操作の処理方法が指定されていないためです。私はCが初めてで、なぜこれが当てはまるのかわかりません。getc不正なメモリ アドレスへのポインタを返す可能性があるという考えはありますgetc(null)か (の動作は予測できないため)。C はgetCからの文字リテラル (文字へのポインターではない) を期待しているため、私にはセキュリティ リスクのようには思えません。

getc から返された文字に有効なポインター値が含まれている可能性があり、それがポインターに割り当てられ、メモリの安全でない領域へのアクセスに使用される可能性があるという心配はありますか? または、 getc がセグメンテーション違反を引き起こすのではないかという心配です(呼び出し関数ではありません)。

4

1 に答える 1

1

GNU Cライブラリのソースコードを読んだことはありませんが(「infogetc」を読んだことがあります)、getcへのポインタを渡すことになっています。渡すポインターがnullポインターの場合、getcは、それが有効なポインターであるかのように読み取り/書き込みを試み、セグメンテーション違反を生成する可能性があります

于 2012-10-27T01:25:15.773 に答える