ホームページ >バックエンド開発 >C++ >C で参照を作成するための NULL ポインターの逆参照が未定義の動作になるのはなぜですか?

C で参照を作成するための NULL ポインターの逆参照が未定義の動作になるのはなぜですか?

Susan Sarandon
Susan Sarandonオリジナル
2024-12-06 14:27:121019ブラウズ

Why is Dereferencing a NULL Pointer to Create a Reference in C   Undefined Behavior?

C 標準: 参照作成のための NULL ポインタの逆参照の未定義の動作

C 標準では、NULL ポインタを逆参照すると未定義の動作が発生することが明示的に規定されています。この原則は、次のコードに例示されているように、参照の作成にも当てはまります。

int* ptr = NULL;
int& ref = *ptr;
int* ptr2 = &ref;

このコードでは、コンパイラは NULL ポインタ ptr を逆参照することによって参照 ref を作成しようとします。標準によれば、これは未定義の動作であり、プログラムのその後の動作は予測できません。

標準の 8.3.2/4 の注記は、この点を補強し、null 参照はウェル内に存在できないと述べています。 NULL ポインターの逆参照が必要になるため、定義されたプログラムは定義されていません。これは未定義の動作です。

定義された動作により、予測可能かつ確実に動作することに注意することが重要です。一貫したプログラムの実行が可能になりますが、未定義の動作ではプログラムの結果が不定のままになります。したがって、C コード内の未定義の動作に依存しないようにすることが重要です。

以上がC で参照を作成するための NULL ポインターの逆参照が未定義の動作になるのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。