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

【C++】new演算子で2次元配列を動的に宣言する方法を解説

C++において、new演算子を使って2次元配列を動的に確保する方法は、メモリ管理の理解を深めるうえで重要なテクニックです。この記事では、基本的な仕組みから具体的なコード例、そして解放時の注意点までわかりやすく解説します。

動的2次元配列の基本構造

動的な2次元配列とは、本質的には「配列へのポインタ」を要素とするポインタ配列です。つまり、まずポインタへのポインタ(int**)の配列を確保し、その後ループ処理で各行に対応する1次元配列を個別に割り当てていくという手順になります。

コード例:3×4の2次元配列を作成する

#include<iostream>
using namespace std;

int main() {
    int rows = 3, cols = 4;
    int** arr = new int*[rows];
    for(int i = 0; i < rows; ++i)
        arr[i] = new int[cols];
    return 0;
}

このコードを実行すると、サイズ3×4の2次元配列が動的に生成されます。処理の流れは以下の通りです。

  • new int*[rows] により、行数分のポインタ配列を確保する
  • forループ内で new int[cols] を使い、各行に列数分の1次元配列を割り当てる

メモリ解放時の注意点

動的に確保したメモリは、必ず自分で解放する必要があります。特に注意すべき点は、確保した順序と逆の順序で解放するということです。つまり、先に各1次元配列をdelete[]で解放し、その後にポインタ配列自体を解放します。

for(int i = 0; i < rows; ++i)
    delete[] arr[i];
delete[] arr;

この順序を守らないとメモリリークや未定義動作の原因となるため、確保と解放は必ず対で管理するようにしましょう。なお、現代のC++ではstd::vector<std::vector<int>>std::unique_ptrなどを活用することで、こうした手動のメモリ管理を回避でき、より安全なコードを書くことができます。

  1. C++プログラムから外部アプリケーション(メモ帳など)を起動する方法

    この記事では、C++プログラムを使ってメモ帳(Notepad)などのサードパーティ製アプリケーションを起動する方法を解説します。実装は非常にシンプルで、コマンドプロンプトで使うコマンドをそのままC++から呼び出すだけで実現できます。ポイントとなるのは、標準ライブラリの system() 関数です。この関数の引数にアプリケーション名(コマンド)を文字列として渡すと、OSがそのコマンドを実行し、対応するアプリケーションが起動します。サンプルコード#include <iostream> using namespace std; int main() { cout <<

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

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