この質問によると、削除せずに同じ通常のポインターで new を 2 回呼び出すことはできませんが、vtkSmartPointer
s を使用している場合はどうなりますか? そのようなスマート ポインターで Delete() を呼び出すと、後で New() が宣言されていても、セグメンテーション エラーが発生する場合がいくつかありました。オブジェクトを完全に破棄して新しいオブジェクトを作成するにはどうすればよいですか? vtkRenderWindow を破棄するにはこれが必要です。前もって感謝します。
1 に答える
1
vtkSmartPointers は、破棄されたときに割り当てられたメモリを独自にクリーンアップすることを目的としているため、上書きしても安全です。ただし、スマート ポインターの他のコピーが残っている場合、「元の」スマート ポインターを上書きしても、ウィンドウはすぐには破棄されません。
vtkSmartPointer<vtkRenderWindow> rw;
rw = vtkRenderWindow<vtkRenderWindow>::New();
rw = vtkRenderWindow<vtkRenderWindow>::New(); // destructor of previous instance is invoked, which deletes the pointer
于 2013-05-10T12:33:01.430 に答える