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

C++のnew演算子で整数の動的配列を作成・削除する方法

C++では、new演算子を使うことで実行時に動的配列(サイズを実行時に決められる配列)を作成できます。確保したメモリは、不要になった時点でdelete演算子を使って解放するのが基本です。

ここでは、ユーザーから要素数と値を入力してもらい、動的配列に格納して表示する簡単なサンプルコードを紹介します。

サンプルコード

#include<iostream>
using namespace std;

int main() {
    int i, n;
    cout << "要素数を入力してください:" << "\n";
    cin >> n;

    // 要素数nのint型動的配列を確保
    int *a = new int[n];

    cout << n << " 個の要素を入力してください" << endl;
    for(i = 0; i < n; i++) {
        cin >> a[i];
    }

    cout << "入力された要素: ";
    for(i = 0; i < n; i++) {
        cout << a[i] << " ";
    }
    cout << endl;

    delete[] a;
    return 0;
}

実行結果

要素数を入力してください:7
7 個の要素を入力してください
1 2 3 4 5 6 7
入力された要素: 1 2 3 4 5 6 7

プログラムのポイント

このプログラムでは、int *a = new int[n]; という記述により、new演算子を使って要素数n分のint型メモリをヒープ領域に確保しています。これにより、コンパイル時にサイズが決まっていない配列でも、プログラムの実行中に柔軟にサイズを指定できるようになります。

使い終わったメモリは delete[] a; を呼び出すことで解放しています。配列として確保したメモリを解放する場合は、単一オブジェクト用の delete ではなく、必ず配列用の delete[] を使う点に注意しましょう。

new int(n) と new int[n] の違い

new int(n) のように丸括弧で書くと、「値がnであるint型変数1個」の確保を意味し、配列にはなりません。要素数nの配列を確保したい場合は、角括弧を使った new int[n] を使用します。この書き間違いは初心者に多いため、しっかり区別しておきましょう。

まとめ

  • new 型名[要素数] で動的配列を確保できる。
  • 解放するときは delete[] ポインタ を使う。
  • 解放を忘れるとメモリリークの原因になるため、確保と解放は必ず対で管理する。
  1. C++とOpenCVで特定の色を検出する方法を解説

    この記事では、C++とOpenCVを使用して、カメラ映像の中から特定の色を検出し、その色を基準にオブジェクトを追跡する方法を解説します。 ただし、色検出や色ベースのトラッキングシステムの性能は実行環境に大きく依存します。部屋の照明を変えたり背景色を変更したりすると、検出精度に大きな影響が及ぶ点に注意してください。 色検出の基本的な流れ OpenCVで色を検出する際は、一般的に次のような手順を踏みます。 カメラから映像(フレーム)を取得する BGR形式の画像をHSV形式に変換する inRange()関数で指定した色の範囲だけを抽出する(二値化) モルフォロジー演算でノイズを除去する 結果を画面

  2. C++のnew演算子を使って2次元配列を動的に宣言・生成する方法

    動的な2次元配列とは、基本的に「配列へのポインタ」を要素とする配列(ポインタの配列)のことです。つまり、各行が独立した1次元配列としてヒープ上に確保され、それらの先頭アドレスを格納するポインタ配列によって全体が管理されます。下図は、3×4の2次元配列のイメージです。アルゴリズムC++のnew演算子で2次元配列を動的に確保する手順は以下の通りです。Begin 配列の寸法(行数・列数)を宣言する。 new を使って 2次元配列 a[][] を動的に確保する。 配列に要素を代入する。 配列の内容を出力する。 delete でメモリを解放する。 Endサンプルコ