クラスの定義とnewによるオブジェクトの生成,メンバ関数 |
使用ソースコードをダウンロードして参考にして下さい。
●メモリ領域の開放
インスタンスの値の適切な変更が終了し,結果の値が参照される(Fig. 2.1-(4))などしてインスタンスが役割を終えると,最後に事後処理とメモリ領域の
開放というステージがやってきます(Fig. 2.1-(5))。静的に確保されたインスタンスのメモリ領域は,そのインスタンスのスコープが終了すると自動的に
解放されます。
一方,newで動的に確保したインスタンスのメモリ領域を開放するには,演算子deleteを用います(Fig. 2.11)。配列のインスタンスを解放するときはdelete
の後に"[ ]"がつくことに気をつけて下さい。使用例はList 2.2の27行目にあります。deleteは,オペランドのポインタ値が空ポインタの場合には何も行いません。
なお,malloc()などのC言語標準関数で確保したメモリ領域をdeleteで開放した場合の動作は保証されていないので,注意して下さい。
先ほどの List 2.8 でも動的に確保されたオブジェクトp の役目が終わったら,delete 演算子でオブジェクトに使用されていたメモリ領域を解放しています。
では,次にオブジェクトがその役目を終える時のことを考えてみましょう。
次に進む