C 文字列ライブラリの strlen 関数を使用しています。NULL 文字列を渡したところ、不思議な結果が見つかりました。NULL 文字列を渡すことになっていないことはわかっていますが、説明が必要です。コードは次のようになります。
main()
{
int k;
char *s=NULL;
strlen(s);
// k = strlen(s);
}
私のgccコンパイラでは、コメントで問題なく動作します。ただし、行のコメントを削除する場合
k=strlen(s);
セグメンテーション違反が発生します。説明はありますか?