I want to deallocate volume memory...

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???

// 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;
}