続いて配列の動的確保について説明します。
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つだけ確保する時には付いていなかった[ ]が付いています。
配列を解放する際には、この括弧を付けなければ不具合が起こります。
非常に面倒だと思いますが、忘れないようにしておかなければなりません。