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