FreeBASIC マニュアルのトップに戻る

FreeBASIC OpDelete

目次演算子メモリ演算子Operator Delete←オリジナル・サイト

演算子 Delete 左にメニュー・フレームが表示されていない場合は、ここをクリックして下さい


演算子 New 式 で割り当てられたデータを破棄し、メモリを解放する演算子

用法:
Delete buf
又は
Delete[] buf

パラメータ:
buf
New Expression 演算子または New[] Expression 演算子(配列版 New Expression 演算子) によって割り当てられたメモリへのポインタ。
(削除するデータ型に応じて、型付きポインタを指定する必要があります。)

記述:
Delete Statement 演算子は、New Expression の演算子で作成されたオブジェクトのメモリを破棄し、解放するために使われます。
TYPE を削除するとき、そのデストラクタが呼び出されます。
Delete Statement 演算子は、New Expression 演算子から返されたアドレスでのみ、使用してください。

Delete Statement 演算子の配列バージョン Delete[] Statement 演算子は、New[] Expression 演算子(New Expression 演算子の配列バージョン)で作成されたオブジェクトの配列を破棄するために使われます。
デストラクタも、ここで呼ばれます。

Delete Statement 演算子は、New Expression 演算子から返されたアドレスと共に使用し、Delete[] Statement 演算子は、 New[] Expression 演算子(New Expression 演算子の配列バージョン)から返されたアドレスと共に使用する必要があります。
異なるバージョンの演算子を混在させることはできません。

メモリが削除された後、buf ポインタは無効なメモリを指しています。
同じポインタ値に対して Delete Expression を2回呼び出すと、未定義の動作が発生します。
null ポインタの間接参照は、見つけて、デバッグすることが簡単なので、以降で誤ったコードの使い方から保護するために、buf ポインタを null (0) に設定することを推奨します。

NULL ポインタに対して Delete Statement 演算子を呼び出しても、何も起こりません。

Delete Statement 演算子によって提供されるメモリー割り当て解除プロセス部分は、メンバー演算子 Delete Overload としてユーザー定義型に対して多重定義できます。
データ破壊のための前の処理部分は、決して修正できません。

注意: 演算子 Delete[](演算子か多重定義)、または、唯一の多重定義演算子 Delete は、サブ型多型と互換性がありません。たとえ、クラッシュを引き起こす可能性のある Override Virtual Destructor を使ってもダメです。
派生型ポインタに対して、このような演算子 Delete([]) Statement を呼び出さなくても、最も安全な方法は、(基本型ポインタに対して)上書きされたユーザー Virtual メンバ手続きを呼び出すことです。 これは派生型レベルで、自動的に演算子 Delete([]) Statement を起動します。

例:
Type Rational
    As Integer numerator, denominator
End Type

' Rationalを作成して初期化し、そのアドレスを保存します。
Dim p As Rational Ptr = New Rational(3, 4)

Print p->numerator & "/" & p->denominator

' rational を破壊し、そのメモリをシステムに戻します。
Delete p

' 将来のアクセスを防ぐために、ポインタを null に設定します。
p = 0


' 100 整数分のメモリを割り当て、最初の分のアドレスを格納します。
Dim p As Integer Ptr = New Integer[100]

' 配列内の整数にいくつかの値を割り当てます。
For i As Integer = 0 To 99
    p[i] = i
Next

' 整数配列全体を解放します。
Delete[] p

' 将来のアクセスを防ぐために、ポインタを null に設定します。
p = 0

方言差:
QBからの違い:
参照:
メモリ演算子 に戻る
演算子 に戻る
←リンク元に戻る プログラム開発関連に戻る

ページ歴史:2019-09-13 03:55:46
日本語翻訳:WATANABE Makoto、原文著作者:JeffMarshall

ホームページのトップに戻る

表示-非営利-継承