C ++
 Computer >> コンピューター >  >> プログラミング >> C ++

C++プログラミングでの一般的な未定義の動作


以下は、C++プログラミングでの未定義動作の最も一般的な原因です。これらはすべて、未定義の動作につながるように標準で指定されており、プログラムを作成するときは絶対に回避する必要があることに注意してください。

  • 符号付き整数オーバーフロー
  • NULLポインターの間接参照、サイズ0の「新しい」割り当てによって返されるポインター、まだ完全に初期化されていないポインター、配列の終わりを超えた場所にあるポインター。
  • スコープ外または削除されたオブジェクトへのポインタの使用
  • 配列の境界外の結果を生成するポインタ演算を実行します。
  • 互換性のないタイプのオブジェクトへのポインタの変換
  • 負のオフセットでのオブジェクトまたは配列の読み取りまたは書き込み
  • コンストラクタまたはデストラクタからオブジェクトの純粋仮想関数を仮想関数で呼び出す
  • 値を返す関数から値を返さない

  1. Cプログラミングにおけるポインターの配列とポインターからポインターへの概念を説明する

    ポインタの配列 他のデータ型と同様に、ポインタ配列を宣言することもできます。 宣言 datatype *pointername [size]; たとえば、int * p [5]; //5つの整数要素アドレスを保持できるポインタの配列を表します 初期化 「&」は初期化に使用されます たとえば、 int a[3] = {10,20,30}; int *p[3], i; for (i=0; i<3; i++) (or) for (i=0; i<3,i++) p[i] = &a[i]; p[i] = a+i; アクセス アクセスには間接演算子(*)を使用します。

  2. Cプログラミング言語でのポインタの配列を説明する

    ポインタは、別の変数のアドレスを格納する変数です。 機能 ポインタはメモリスペースを節約します。 メモリ位置に直接アクセスできるため、ポインタの実行時間が短縮されます。 ポインタを使用すると、メモリに効率的にアクセスできます。つまり、メモリは動的に割り当てられ、割り当てが解除されます。 ポインタはデータ構造で使用されます。 ポインタの宣言と初期化 次のステートメントを検討してください- int qty = 179; メモリ内では、変数は次のように表すことができます- ポインタの宣言 これは、以下に示すように、「p」が別の整数変数のアドレスを保持するポインタ変数であることを意味し