VTK笔记-01

VTK是一个开源面向对象的软件系统,可以用于计算机图形学,可视化,和图像处理。提供了很多的非常简单容易使用的面向对象的设计和实现。

SmartPointer设计

在VTK中的很多对象操作都是基于SmartPointer实现的,这个在官方文档中提到,它背后的思想是引用计数和更加自动化的内存管理,在使用这个模板类不需要自己去指定释放资源,因为根据引用计数,一旦这个指针没有再被引用了之后就会被被自动释放很好地保护了内存资源1

如果不用智能指针,对于一个VTK对象则要

vtkObject* MyObject = vtkObject::New();

然后使用完成后还必须要对其进行释放

MyObject->Delete();

但是加入智能指针之后,就可以避免这些资源释放的问题

#include <vtkSmartPointer.h>
vtkSmartPointer<vtkObject> MyObject = vtkSmartPointer<vtkObject>::New();

把指针传递给一个函数

void MyFunction(vtkSmartPointer<vtkPolyData> polydata) { ... }
...
vtkSmartPointer<vtkPolyData> polydata = vtkSmartPointer<vtkPolyData>::New();
MyFunction(polydata);

还可以将智能指针作为类的成员变量,这样的好处之一就是避免总是看到星星*,当然最重要的事情是我们不必再劳心于程序设计中的内存管理,因为智能指针已经通过引用计数来解决了这类问题,有点Java的感觉了。

vtkPolyDataMapper


  1. https://www.vtk.org/Wiki/VTK/Tutorials/SmartPointers 




Enjoy Reading This Article?

Here are some more articles you might like to read next:

  • Word 排版技巧
  • Black First Won
  • a post with images
  • Alias Method
  • 转置卷积