2012-02-16 6 views

答えて

5

原因int* pランダム/ごみ値を含みます。

NULLポインタではありません。明示的にそれをp = NULL;で初期化する必要があります。

未初期化変数の使用は未定義の動作です。

main()return 0;にする必要があります。

1

pはCでは自動的に0に初期化されないため(これはJavaではありません)。

int *p = 0; 
1

perrorへの無効なポインタを渡すことは、未定義の動作です。明示的に以下の詳細な説明では特に断りのない限り

(C99、7.1.4p1)「次の文は、それぞれが適用されます。関数の引数は、そのようなドメイン外の値として無効な値を(持っている場合関数、またはプログラムのアドレス空間外のポインタ、ヌルポインタ、または対応する パラメータがconst修飾されていない場合の変更不可能なストレージへのポインタ)、または関数によって期待されない型(昇格後)引数の数が可変の の場合、動作は未定義です。

+0

どのようにリファレンスソースをすばやく見つけることができますか?ありがとう! – Coffee

+0

about: '7.19.10.4-2':' 's'がヌルポインタではなく、' s'が指す文字がヌル文字*でない場合。 – cnicutar

+0

@cnicutar私は、 "未定義の振る舞いはこの言葉で"未定義の振る舞い "という言葉や振る舞いの明示的な定義を省略して、この規格で別途指示されていると言っています。" – ouah

関連する問題