C++ の nullptr とは

C No Nullptr Toha



C++ では、a と呼ばれる特定のポインター値 ヌルポインタ ポインタが有効なメモリ位置を参照していないことを示すために使用されます。 C++11 標準以降では、キーワード「」で表されます。 nullptr 」または定数値 0 によって。

ヌルポインタ これは、予期しない実行時エラーやソフトウェア障害につながる可能性のある誤ったメモリ アクセスを防ぐのに役立つため、非常に重要です。プログラムが、作成されていないか、既に割り当てが解除されているメモリ アドレスに対して読み取りまたは書き込みを試行するシナリオを考えてみましょう。この動作は C++ では定義できず、重大な実行時の問題やセキュリティ上の欠陥が発生する可能性があります。ポインターが null 値にリンクしている場合、ポインターは無効であり、逆参照するべきではありません。プログラムの終了、セグメンテーション違反、または不正なメモリ アクセスは、逆参照時に発生する可能性のある予期しない動作のほんの一例です。 ヌルポインタ .

C++ での nullptr の例

#include
使用して 名前空間 標準 ;
整数 主要 ( )
{
nullptr_t pi1、pi2 ;
もしも ( pi1 >= pi2 )
{
カウト << 「ポインタ 1 がポインタ 2 の値より大きい」 << エンドル ;
}
それ以外
{
カウト << 「ポインタ 2 がポインタ 1 の値より大きい」 << エンドル ;
}
チャー * チャンネル = pi1 ;
もしも ( チャンネル == nullptr )
カウト << 「ch ポインタ変数は 0 番目のアドレス参照で null 値を持っています」 << エンドル ;
それ以外
カウト << 「ch ポインタ変数は null 値ではなく、アドレス参照のある値を持っています」 << エンドル ;
戻る 0 ;
}

上記のコードでは、2 つを使用しています。 nullptrs そしてそれらを互いに比較します。次に、文字ポインターを使用して検証します nullptr .







出力



C++ で nullptr を使用する理由

ヌル ポインター いくつかの理由から、C++ プログラミングでよく使用されます。



1: ポインタの初期化

ポインタ変数を宣言するときは、常に有効なメモリ位置または変数で初期化する必要があります。 ヌルポインタ .コードの後半でポインターにアクセスするときに、宣言されていない動作を防ぐのに役立ちます。





2: エラーコード

関数が戻る場合があります ヌルポインタ 指定されたアクションを完了できなかったこと、またはメモリを割り当てられなかったことを示すエラー コードとして。

3: ポインタの有効性の検証

逆参照する前にポインターの有効性を検証することは、常に賢明な考えです。これにより、コードの堅牢性が向上し、予期しないランタイム エラーの防止に役立ちます。



4: ポリモーフィズム

C++ では、派生クラスのオブジェクトを指していない基本クラス ポインターは、次のように表されます。 ヌルポインタ .これは通常、ポリモーフィック プログラミングで、継承や仮想関数などのオブジェクト指向機能を処理するために使用されます。

ヌル ポインター ダングリングまたは初期化されていないポインターと混同しないでください。これを覚えておくことが重要です。初期化されていないポインタは、値で初期化されていないため、メモリ内の任意のアドレスを指すことができます。一方、ダングリング ポインターは、無効な、または既に割り当て解除されたメモリ領域を参照するポインターです。 C++ プログラミングでは、ダングリング ポインターと初期化されていないポインターの両方が実行時の問題を引き起こす可能性があります。

C++ で nullptr を使用する利点

を使用することにはいくつかの利点があります。 nullptr .

1: 安全性

なぜなら nullptr NULL よりもタイプ セーフであるため、代わりに使用する必要があります。 NULL は単純に値ゼロの整数定数として定義されますが、 nullptr ポインター型にのみ変換でき、他の型には変換できないポインター リテラルです。

2: 使いやすさ

C++ プログラミングでは、さまざまな使用方法があります。 ヌルポインタ .例として、ポインターを初期化する、関数呼び出しにパラメーターを送信する、関数からポインター値を返すなどの用途が考えられます。また、関数呼び出しまたはアクションが正当なポインター値を生成したかどうかを判断するためにも使用できます。

3: 動的メモリ割り当て

動的メモリ割り当ては、最も一般的な用途の 1 つです。 ヌルポインタ . C++ で new 演算子を使用すると、動的メモリ割り当てが実現されます。新しいメソッドを呼び出すと、新しく生成されたオブジェクトへのポインターが返されます。十分なメモリがないなど、何らかの理由で割り当てが失敗した場合は、NULL が返されます。したがって、ポインターを使用する前に戻り値を検証して、割り当てが成功したことを確認することが重要です。

結論

ヌルポインタ メモリ内のアドレスが欠落していることを示すメカニズムを提供する C++ プログラミングの重要なアイデアです。開発者は、採用することでソフトウェアのクラッシュやその他の問題を防ぐことができます ヌルポインタ アプリケーションが誤ったメモリ アドレスにアクセスしないようにします。そのため、プログラマーがその方法を理解することが不可欠です。 ヌルポインタ プログラムで効率的に使用する必要があります。