VTK 5.4.2のコードを参照していたため、Delete()関数がどのように機能するのか分かりません。つまり、Delete()関数はvtkObjectBaseにあり、仮想ですが、vtkDoubleArrayクラスのデストラクタがどのようなコマンドチェーンで実行されるのですか?VTK Delete()とデータ削除
よろしく、
mightydodol
VTK 5.4.2のコードを参照していたため、Delete()関数がどのように機能するのか分かりません。つまり、Delete()関数はvtkObjectBaseにあり、仮想ですが、vtkDoubleArrayクラスのデストラクタがどのようなコマンドチェーンで実行されるのですか?VTK Delete()とデータ削除
よろしく、
mightydodol
vtkObjectBaseは、(削除)がUnRegisterInternalを呼び出します。クラスReferenceCountが1以下の場合、クラスのdeleteを呼び出します。
これは一種の参照カウントのガベージコレクタです。
vtkObjectBaseを見ると、Register、UnRegister、Deleteの3つの機能があります。これらは参照カウントを実行するものです。
インスタンスを登録すると、参照カウントが増加します。登録を解除すると、それは減少します。 ref。カウントが0に達すると、それは削除されます。 New()を使ってオブジェクトを作成すると、参照カウント0で始まります。独立したインスタンスが必要になるたびに、Registerを呼び出し、refをインクリメントします。カウント。 Delete()はUnRegister()の別名です。
オブジェクトを別のオブジェクトに設定すると(vtkPolyDataインスタンスをアルゴリズムとして入力に設定するなど)、設定しているインスタンス(アルゴリズム)を親として登録を呼び出します。今、親(アルゴリズム)が削除されると、その子はそれと共に見つけられ削除されます。
2つのオブジェクト(vtkRendererとvtkRenderWindowなど)が互いに参照している場合、それらが相互UnRegistersの周期的な祭りに入らないようにする方法もありますが、基本的にはそれです。
また、非常に頻繁にDelete()を呼び出す必要はありません。ほとんどの場合、代わりにvtkSmartPointerを使用することが可能です。