一.VtkSmartPointer
使用智能指针创建对象,则无需手动调用Delete()方法减少引用计数,因为引用计数的增加与减少都是由智能指针自动完成的。VTK实现了便利的自动内存管理的概念,使用引用计数。与其他智能指针不同之处在于引用计数保留在VTK对象本身中,而不是智能指针类中。这样的好处在于:即使VTK对象作为原始指针传递,也可以增加引用计数。因此使用智能指针时,我们不需要考虑内存管理的问题。
二.手动释放内存
但在一些情况下,我们需要手动释放内存,例如在进行数据切换时,我们可能想要释放掉上一个数据占据的内存,特别是在数据比较大的时候。
这也可以不通过智能指针,而是通过new和delete方法进行内存管理。如下:
vtkNrrdReader* reader = vtkNrrdReader::New(); reader->SetFileName(dirPath.c_str()); reader->Update(); vtkImageData* m_imageData = vtkImageData::New(); m_imageData->DeepCopy(reader->GetOutput());//深拷贝 reader->Delete();//释放vtkNrrdReader中的内存 m_imageData->UnRegister(m_imageData);//释放图像内存
标签:释放,imageData,手动,计数,VTKImageData,内存,reader,指针 From: https://www.cnblogs.com/0523jy/p/17273985.html