vtk中Register函数的妙用

VTK中Register函数的妙用

众所周知,VTK中的智能指针vtkSmartPointer给了我们方便操作内存的方法,使我们不用为内存的管理而操心。VTK会自动识别分配的内存是否仍在使用,并且释放已经不再使用的内存。

VTK实现这样的机制与C++11中的智能指针类似,是通过ReferenceCount来实现,简单来说,就是使用ReferenceCount对内存的使用进行计数。

通常有以下几种情况:
(1) 当创建一个类的实例时,该实例的ReferenceCount会设置为1。
(2) 当使用SetInput和GetOutput这样的pipeline来链接类之间的数据流时,输出数据的类,即调用了GetOutput的类的ReferenceCount会自动加一。
(3) 当一个类在局部函数中被使用,而没有加入到pipeline中进行调用。当跳出局部函数后,该类实例的ReferenceCount则会自动减一,直到其为0,自动释放内存。

值得注意的是,上述的自动计数机制只有在VTK的体系中才有用,如果跳出了VTK的体系,在其他地方调用VTK类中的数据,则不会对ReferenceCount产生任何影响。

那么这个时候怎么办呢?

这个时候就要用到vtk类中常见的Register/Unregister的功能。这两个功能可以人为地对vtk类的ReferenceCount进行加一或减一的操作,从而决定该类销毁与否。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值