# I want to deallocate volume memory...

**URL:** https://discourse.vtk.org/t/i-want-to-deallocate-volume-memory/4407
**Category:** Support
**Created:** [October 13, 2020, 8:23am UTC](https://discourse.vtk.org/t/i-want-to-deallocate-volume-memory/4407 "2020-10-13T08:23:02Z")
**Posts on this page:** 1
**Page:** 1

<div class="post-metadata">

### Author: ![wonki](https://discourse.vtk.org/user_avatar/discourse.vtk.org/wonki/32/2345_2.png) [@wonki](https://discourse.vtk.org/u/wonki)
#### Post date: [October 13, 2020, 8:23am UTC](https://discourse.vtk.org/t/i-want-to-deallocate-volume-memory/4407/1 "2020-10-13T08:23:02Z")

</div>

I run the program about volume rendering in ios.

I set the volume and change the volume by below function that made by me.

But I can’t deallocate volume memory… How to do that???

 ![스크린샷 2020-10-13 오후 5.21.19](https://discourse.vtk.org/uploads/default/original/2X/f/f38e9785ef63dfd0efb863029bdfc739c0692f03.png)

```
// Not working well...
// volume -> Delete();
// volumeMapper -> Delete();
// volumeProperty->Delete();
void* setVolume(void* renWin, void* renVolume, const char* filename, float resample)
{
    vtkIOSRenderWindow * win = static_cast<vtkIOSRenderWindow *>(renWin);
    vtkSmartPointer<vtkVolume> volume = static_cast<vtkVolume *>(renVolume);
    
    vtkRenderer* renderer = win->GetInteractor()->GetInteractorStyle()->GetDefaultRenderer();

    renderer->RemoveVolume(volume);

    volume = vtkVolume::New();

    vtkSmartPointer<vtkNrrdReader> mi = vtkNrrdReader::New();
    mi->SetFileName(filename);
    mi->Update();

    vtkSmartPointer<vtkImageShiftScale> filter = vtkImageShiftScale::New();
    filter->SetOutputScalarTypeToInt();

    filter->SetInputConnection(mi->GetOutputPort());
    filter->SetShift(100);
    filter->SetScale(1);
    filter->Update();

    vtkSmartPointer<vtkImageResample> resampler = vtkImageResample::New();
    resampler->SetInputConnection(filter->GetOutputPort());
    resampler->SetAxisMagnificationFactor(0, resample);
    resampler->SetAxisMagnificationFactor(1, resample);
    resampler->SetAxisMagnificationFactor(2, 1.0);

    vtkSmartPointer<vtkSmartVolumeMapper> volumeMapper = vtkSmartVolumeMapper::New();
    volumeMapper->SetInputConnection(resampler->GetOutputPort());
    volumeMapper->Update();
    volumeMapper->SetAutoAdjustSampleDistances(1);
    volumeMapper->CroppingOn();

    bool independentComponents = true;
    vtkSmartPointer<vtkVolumeProperty> volumeProperty = vtkVolumeProperty::New();
  
    volumeProperty->SetShade(1);
    volumeProperty->SetIndependentComponents(independentComponents);
    volumeProperty->SetInterpolationTypeToLinear();
  
    volume->SetMapper(volumeMapper.GetPointer());
    volume->SetProperty(volumeProperty.GetPointer());
  
    volume->SetScale(1.0, 1.0, 1.0);
    volume->SetOrigin(0, 0, 0);
  
    renderer->SetBackground2(0.2, 0.3, 0.4);
    renderer->SetBackground(0.1, 0.1, 0.1);
    renderer->GradientBackgroundOn();
    renderer->AddVolume(volume);
    renderer->ResetCamera();
    renderer->GetActiveCamera()->Zoom(1.4);

    volume->Update();

    return volume;
}
```
