vtkSmartPointer<vtkObject>というクラスがあります。これを使うことでvtkで起こりがちなDeleteし忘れによるメモリリークを予防できます。
面倒なのでよく使うものはtypedefしてもいいかもしれません。
ただし自分でNewしないもの(= Deleteしないもの)についてはvtkSmartPointerを使う必要はありません。
手動の参照カウンタがついているのがvtkのポインタ管理です。
vtkSmartPointer<vtkActor> pvtkActor = vtkSmartPointer<vtkActor>::New();
面倒なのでよく使うものはtypedefしてもいいかもしれません。
typedef vtkSmartPointer<vtkActor> vtkActorPointer;
ただし自分でNewしないもの(= Deleteしないもの)についてはvtkSmartPointerを使う必要はありません。
vtkSmartPointer<vtkPolyDataReader> pvtkPolyDataReader = vtkSmartPointer<vtkPolyDataReader>::New(); pvtkPolyDataReader->SetFileName(filename); pvtkPolyDataReader->Update(); vtkPolyData* pvtkPolyData = pvtkPolyDataReader->GetOutput();この場合、pvtkPolyDataReaderが破棄されるとvtkPolyDataもDeleteされてしまいますが、vtkPolyDataMapperにSetInput等するとvtkPolyDataはRegisterされるのでなくなりません。
手動の参照カウンタがついているのがvtkのポインタ管理です。

コメントをかく