- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
是否可以在调用析构函数之前释放 vtkSmartPointer(对象生命周期结束范围结束)?
我有一个类绘制某种类型的图。还有一个 close() 函数,它将关闭当前打开的窗口。但是,如果用户调用它,我想释放所有剩余的 vtkSmartPointers,该类必须释放一些内存。假设他画了一些东西,做了很多计算,然后喜欢用同一个对象再画一遍。在这些计算过程中,我想释放所有未使用的内存。
根据the documentation没有像 std::unique_ptr::release
这样的函数,但是有什么解决方法吗?
最佳答案
Bwmat 的回答有效:
#include <iostream>
#include <vtkObject.h>
#include <vtkObjectFactory.h>
#include <vtkSmartPointer.h>
class vtkMyClass : public vtkObject {
public:
vtkTypeMacro(vtkMyClass,vtkObject);
void PrintSelf(ostream& os, vtkIndent indent){}
static vtkMyClass * New();
protected:
vtkMyClass();
~vtkMyClass();
};
vtkStandardNewMacro(vtkMyClass)
vtkMyClass::vtkMyClass() {
std::cerr << "constructor called\n";
}
vtkMyClass::~vtkMyClass() {
std::cerr << "destructor called\n";
}
int main(int argc, char ** argv) {
std::cerr << __LINE__ << '\n';
vtkSmartPointer< vtkMyClass > myObject;
std::cerr << __LINE__ << '\n';
myObject = vtkSmartPointer< vtkMyClass >::New();
std::cerr << __LINE__ << '\n';
myObject = NULL; // calls destructor
std::cerr << __LINE__ << '\n';
return 0;
}
输出:
22
24
constructor called
26
destructor called
28
关于c++ - 如何释放 vtkSmartPointer,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16497930/
是否可以在调用析构函数之前释放 vtkSmartPointer(对象生命周期结束范围结束)? 我有一个类绘制某种类型的图。还有一个 close() 函数,它将关闭当前打开的窗口。但是,如果用户调用它,
用 C++ 编写程序。我有一个创建多个 vtkSmartPointers 的函数,如下所示: vtkSmartPointer transformNode = vtkSmartPointer::Ne
我从一个vtk类继承了一个类。该类的构造函数需要传递两个参数。我必须如何使用 New() 运算符? 谢谢 这是一个例子: class MyClass:vtkClass { MyClass(argume
什么可能是一个简单的问题,但在查看 Android 上所有示例的代码时,我注意到 vtkSmartPointer<>示例中根本没有使用。有什么特别的原因吗?我现在有点习惯使用它们了,我想知道使用它们是
我试图在 VTK 8.1 中使用 vtkDataArray 将标量字段存储在 vtkUnstructuredGrid 中,并最终将其写入文件。我正在通过 Visual Studio 2017 社区版编
我是一名优秀的程序员,十分优秀!