next up previous
Next: 参照(リファレンス) Up: ススンデルCとしてのC++ Previous: 演算子の多重定義

newdelete

データを動的に確保するとき,Cでは次のようなことをよくやる.

struct vector2D *v;
...
v = (struct vector2D*)malloc(sizeof(struct vector2D));
...
free(v);
C++では,動的なメモリの確保と再利用のための演算子が用意されている. 上記の例は,C++では
vector2D *v;
...
v = new vector2D;
...
delete v;
と記述でき,簡潔だ.ここまで述べた例では,Cの例とC++の例とは ほとんど同じ意味だが,後述するコンストラクタやデストラクタが 絡んでくると,意味が変わってくる.

newdeleteを使って,配列を確保することもできる. 例えばvector2Dの10個の配列を確保する場合,

struct vector2D *v;
...
v = new vector2D[10];
...
delete[] v;
と記述する.メモリを回収するのが,deleteではなくdelete[] というところがポイントだ.



Akinori ITO
Thu Aug 7 15:05:13 JST 1997