<div class="gmail_quote">On Mon, Jun 18, 2012 at 5:29 PM, matheus_viana <span dir="ltr"><<a href="mailto:vianamp@gmail.com" target="_blank">vianamp@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
Hi Guys,<br>
<br>
I've a code that looks like that:<br>
<br>
for (int i=100;i--;) {<br>
vtkStructuredPointsReader *Reader = vtkStructuredPointsReader::New();<br>
structured_dataset -> SetFileName("ImageData001.vtk");<br>
structured_dataset -> Update();<br>
<br>
vtkImageData *ImageData = vtkImageData::New();<br>
ImageData = structured_dataset -> GetOutput();<br>
ImageData -> Update();<br>
<br>
/**<br>
working on the ImageData<br>
**/<br>
<br>
ImageData -> Delete();<br>
}<br>
<br>
This code used to work well in VTK4, but in VTK5 it crashes at line<br>
ImageData -> Delete(); Commenting this line the code runs well, but the<br>
memory is not released at each interaction.<br>
<br>
Do you guys know how to solve that? Is one possibility use the class<br>
vtkSmartPointer? If so, how to do that?<br>
<br>
Thanks in advance,<br>
Matheus Viana<br></blockquote><div><br></div><div>The memory for the ImageData is allocated inside of the reader, so you should replace </div><div><br></div><div> vtkImageData *ImageData = vtkImageData::New();<br>
ImageData = structured_dataset -> GetOutput();
</div><div><br></div><div>with simply:</div><div><br></div><div> vtkImageData *ImageData = structured_dataset -> GetOutput();
</div><div><br></div><div>then you would not delete the imageData object, but rather the reader object at the end of the loop. Alternatively (as you mentioned, you could use</div><div><br></div><div> vtkSmartPointer<vtkStructuredPointsReader> Reader = vtkSmartPointer<vtkStructuredPointsReader>::New();</div>
<div><br></div><div>instead of</div><div><br></div><div> vtkStructuredPointsReader *Reader = vtkStructuredPointsReader::New();
</div><div><br></div><div>and you wouldn't have to delete anything.</div><div><br></div><div>David</div></div>