★配列の確保★


続いて配列の動的確保について説明します。

C言語編では、↓のように書いていました。

int *p;

p = (int*)malloc(sizeof(int) * 10);

C++ではnewを使いますので、書き方が違います。

サンプルを作って説明します。

<sample program cpp027-01>

#include <iostream>

int main()
{
    const int COUNT = 5;

    int *p = NULL;
    
    p = new int[COUNT];

    if (!p) {
        return 1;
    }

    for (int i = 0; i < COUNT; i++) {
        p[i] = (i + 1) * 10;
    }
    
    for (int i = 0; i < COUNT; i++) {
        std::cout << p[i] << " ";
    }
    std::cout << std::endl;

    if (p) {
        delete [] p;
        p = NULL;
    }

<実行結果>

10 20 30 40 50
続行するには何かキーを押してください・・・

C++で配列を確保する時には、型の後ろに[ ]を付けて、要素数を入れます。

p = new int[COUNT];

malloc関数よりは直感的で分かりやすいと思います。

確保した配列の使い方もC言語と全く同じです。

一番気を付けなければならないのは解放のコードです。

if (p) {
    delete [] p;
    p = NULL;
}

変数や構造体を1つだけ確保する時には付いていなかった[ ]が付いています。

配列を解放する際には、この括弧を付けなければ不具合が起こります。

非常に面倒だと思いますが、忘れないようにしておかなければなりません。


次へ

戻る

目次へ