gpt4 book ai didi

c++ - VTK Delete() 和数据删除

转载 作者:太空狗 更新时间:2023-10-29 19:45:06 26 4
gpt4 key购买 nike

我正在浏览 VTK 5.4.2 代码,似乎无法理解 Delete() 函数的工作原理。我的意思是,Delete() 函数在 vtkObjectBase 中并且是虚拟的,但是,通过什么命令链执行 vtkDoubleArray 类(例如)的析构函数?

最好的问候,

强大的多尔

最佳答案

这是一种引用计数垃圾收集器。

如果您看一下 vtkObjectBase,它包含三个函数 - Register、UnRegister 和 Delete。这些是执行引用计数的。

当您注册一个实例时,它会增加一个引用计数。当您取消注册时,它会减少。当裁判。计数达到 0,它被删除。当您使用 New() 创建一个对象时,它从 0 的引用计数开始。每次您想要它的一个独立实例时,您都会对其调用 Register,它会递增 ref。数数。 Delete() 只是 UnRegister() 的另一个名称。

如果您将一个对象设置为另一个对象(例如将 vtkPolyData 实例设置为算法作为输入),它会调用 Register 并将您设置到(算法)中的实例作为父对象。现在,当父项(算法)被删除时,它的子项会被找到并一起删除。

还有一种方法可以确保当两个对象相互引用(例如 vtkRenderer 和 vtkRenderWindow)时,它们不会进入相互 UnRegisters 的循环节日,但基本上就是这样。

关于c++ - VTK Delete() 和数据删除,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1345305/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com