<html><body><div style="color:#000; background-color:#fff; font-family:Courier New, courier, monaco, monospace, sans-serif;font-size:10pt"><div><span>Thank you.</span></div><div style="color: rgb(0, 0, 0); font-size: 13px; font-family: 'Courier New', courier, monaco, monospace, sans-serif; background-color: transparent; font-style: normal;"><span><br></span></div><div style="color: rgb(0, 0, 0); font-size: 13px; font-family: 'Courier New', courier, monaco, monospace, sans-serif; background-color: transparent; font-style: normal;"><span>SetSource(NULL) solves the issue.</span></div><div style="color: rgb(0, 0, 0); font-size: 13px; font-family: 'Courier New', courier, monaco, monospace, sans-serif; background-color: transparent; font-style: normal;"><span><br></span></div><div style="color: rgb(0, 0, 0); font-size: 13px; font-family: 'Courier New', courier, monaco, monospace, sans-serif; background-color: transparent; font-style:
 normal;"><span>Best.</span></div><div><br></div>  <div style="font-family: 'Courier New', courier, monaco, monospace, sans-serif; font-size: 10pt;"> <div style="font-family: 'times new roman', 'new york', times, serif; font-size: 12pt;"> <div dir="ltr"> <hr size="1">  <font size="2" face="Arial"> <b><span style="font-weight:bold;">De&nbsp;:</span></b> Alex Malyushytskyy &lt;alexmalvtk@gmail.com&gt;<br> <b><span style="font-weight: bold;">À&nbsp;:</span></b> Malsoaz James &lt;jmalsoaz@yahoo.fr&gt; <br><b><span style="font-weight: bold;">Cc&nbsp;:</span></b> "vtkusers@vtk.org" &lt;vtkusers@vtk.org&gt; <br> <b><span style="font-weight: bold;">Envoyé le :</span></b> Samedi 6 juillet 2013 0h01<br> <b><span style="font-weight: bold;">Objet&nbsp;:</span></b> Re: [vtkusers] Memory management : pointer on VTK object<br> </font> </div> <div class="y_msg_container"><br><div id="yiv5293525324"><div dir="ltr"><div><div><span
 style="font-size:13px;font-style:italic;">Try to add<br></span><span style="font-size:13px;font-style:italic;"><span style="font-size:13px;font-style:italic;"><span style="font-size:13px;font-style:italic;">SetSource(NULL);<br>
</span></span></span></div><div><span style="font-size:13px;font-style:italic;"><span style="font-size:13px;font-style:italic;"><span style="font-size:13px;font-style:italic;">calls after you register polydata<br>
</span></span></span></div><div><span style="font-size:13px;font-style:italic;"><span style="font-size:13px;font-style:italic;"><span style="font-size:13px;font-style:italic;"><br>
</span></span>polydata-&gt;Register(NULL);<br></span><span style="font-size:13px;font-style:italic;">polydata</span><span style="font-size:13px;font-style:italic;"><span style="font-size:13px;font-style:italic;">-&gt;SetSource(NULL);</span></span><br>
.....<br><span style="font-size:13px;font-style:italic;">output-&gt;Register(NULL);<br></span><span style="font-size:13px;font-style:italic;"><span style="font-size:13px;font-style:italic;">output-&gt;SetSource(NULL);<br>
<br></span></span></div><div><span style="font-size:13px;font-style:italic;"><span style="font-size:13px;font-style:italic;">Another source of extra memory usage may be memory granularity,<br>
</span></span></div><div><span style="font-size:13px;font-style:italic;"><span style="font-size:13px;font-style:italic;">If you say that DeepCopy helps it means deleting/allocationg memory at the same and bugger chunks helps to avoid granularity.<br>
</span></span></div><div><span style="font-size:13px;font-style:italic;"><span style="font-size:13px;font-style:italic;">In this case nothing you can do.<br>
<br><br></span></span><span style="font-size:13px;font-style:italic;"><span style="font-size:13px;font-style:italic;">In any case I would suggest to get <br>
<br></span></span><span style="font-size:13px;font-style:italic;"><span style="font-size:13px;font-style:italic;"><span style="font-size:13px;font-style:italic;"><span style="white-space:pre-wrap;">        </span>vtkTransformPolyDataFilter * trFilter = vtkTransformPolyDataFilter::New();<br>
<br></span></span></span></div><div><span style="font-size:13px;font-style:italic;"><span style="font-size:13px;font-style:italic;"><span style="font-size:13px;font-style:italic;">and<br>
</span></span></span><span style="font-size:13px;font-style:italic;"><span style="white-space:pre-wrap;"></span>&nbsp;&nbsp; trFilter-&gt;Delete();</span><span style="font-size:13px;font-style:italic;"><span style="font-size:13px;font-style:italic;"></span></span></div>
<div><span style="font-size:13px;font-style:italic;"><span style="font-size:13px;font-style:italic;">out of loop.<br>
</span></span></div><div><span style="font-size:13px;font-style:italic;"><span style="font-size:13px;font-style:italic;"><br>
<br></span></span></div><div><span style="font-size:13px;font-style:italic;"><span style="font-size:13px;font-style:italic;">Regards,<br>
</span></span></div><div><span style="font-size:13px;font-style:italic;"><span style="font-size:13px;font-style:italic;">&nbsp;&nbsp;&nbsp; Alex<br>
</span></span></div><div><span style="font-size:13px;font-style:italic;"><span style="font-size:13px;font-style:italic;"><br>
</span></span></div></div></div><div class="yiv5293525324gmail_extra"><br><br><div class="yiv5293525324gmail_quote">On Thu, Jul 4, 2013 at 12:33 AM, Malsoaz James <span dir="ltr">&lt;<a rel="nofollow" ymailto="mailto:jmalsoaz@yahoo.fr" target="_blank" href="mailto:jmalsoaz@yahoo.fr">jmalsoaz@yahoo.fr</a>&gt;</span> wrote:<br>
<blockquote class="yiv5293525324gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;"><div><div style="font-size: 10pt; font-family: 'Courier New', courier, monaco, monospace, sans-serif;"><div style="font-size:10pt;">
Hi,</div><div style="font-size:10pt;"><br></div><div style="font-style:normal;font-size:13px;background-color:transparent;">
I'm experiencing troubles when copying pointers of VTK object.</div><div style="font-style:normal;font-size:13px;background-color:transparent;"><br>
</div><div style="font-style:normal;font-size:13px;background-color:transparent;">Let's say I want to apply
 transformation to a polydata recursively like this:</div><div style="font-style:normal;font-size:13px;background-color:transparent;"><br></div><div style="font-size:13px;background-color:transparent;">
<span style="font-style:italic;">&nbsp; &nbsp; //Read STL</span></div><div style="background-color:transparent;"><span style="font-size:13px;font-style:italic;">&nbsp; &nbsp; vtkSTLReader * reader = vtkSTLReader::New();</span></div>
<div style="background-color:transparent;"><span style="font-size:13px;font-style:italic;">&nbsp; &nbsp; reader-&gt;SetFileName("1.stl");</span></div><div style="background-color:transparent;">
<span style="font-size:13px;font-style:italic;">&nbsp; &nbsp; reader-&gt;Update();</span></div><div style="background-color:transparent;"><span style="font-style:italic;"><br>
</span></div><div style="background-color:transparent;"><span style="font-size:13px;font-style:italic;">&nbsp; &nbsp; vtkPolyData * polydata = reader-&gt;GetOutput();</span></div>
<div style="background-color:transparent;"><span style="font-size:13px;font-style:italic;">&nbsp; &nbsp; polydata-&gt;Register(NULL);</span></div><div style="background-color:transparent;">
<span style="font-size:13px;font-style:italic;">&nbsp; &nbsp; reader-&gt;Delete();</span></div><div style="background-color:transparent;"><span style="font-size:13px;font-style:italic;"><br>
</span></div><div style="background-color:transparent;"><span style="font-size:13px;font-style:italic;">&nbsp; &nbsp; vtkTransform * tr = vtkTransform::New();</span></div>
<div style="background-color:transparent;"><span style="font-size:13px;font-style:italic;">&nbsp; &nbsp; tr-&gt;Translate(5, 10, 1);</span></div><div style="background-color:transparent;">
<span style="font-size:13px;font-style:italic;">&nbsp; &nbsp; tr-&gt;Update();</span></div><div style="background-color:transparent;"><span style="font-size:13px;font-style:italic;"><br>
</span></div><div style="background-color:transparent;"><span style="font-size:13px;font-style:italic;">&nbsp; &nbsp; for(int i = 0 ; i &lt; 1000 ; ++i)</span></div>
<div style="background-color:transparent;"><span style="font-size:13px;font-style:italic;">&nbsp; &nbsp; {</span></div><div style="background-color:transparent;"><span style="font-size:13px;font-style:italic;">&nbsp; &nbsp; <span style="white-space:pre-wrap;">        </span>std::cout &lt;&lt; i &lt;&lt; std::endl;</span></div>
<div style="background-color:transparent;"><span style="font-size:13px;font-style:italic;">&nbsp; &nbsp; <span style="white-space:pre-wrap;">
        </span>vtkTransformPolyDataFilter * trFilter = vtkTransformPolyDataFilter::New();</span></div><div style="background-color:transparent;"><span style="font-size:13px;font-style:italic;"><span style="white-space:pre-wrap;">        </span>trFilter-&gt;SetInput(polydata);</span></div>
<div style="background-color:transparent;"><span style="font-size:13px;font-style:italic;"><span style="white-space:pre-wrap;">        </span>trFilter-&gt;SetTransform(tr);</span></div>
<div style="background-color:transparent;"><span style="font-size:13px;font-style:italic;"><span style="white-space:pre-wrap;">        </span>trFilter-&gt;Update();</span></div>
<div style="background-color:transparent;"><span><br></span></div><div style="background-color:transparent;"><span style="font-size:13px;font-style:italic;"><span style="white-space:pre-wrap;">        </span>vtkPolyData * output = trFilter-&gt;GetOutput();</span></div>
<div style="background-color:transparent;"><span style="font-size:13px;font-style:italic;"><span style="white-space:pre-wrap;">        </span>output-&gt;Register(NULL);</span></div>
<div style="background-color:transparent;"><span style="font-size:13px;font-style:italic;"><span style="white-space:pre-wrap;">        </span>trFilter-&gt;Delete();</span></div>
<div style="background-color:transparent;"><span style="font-size:13px;font-style:italic;"><br></span></div><div style="background-color:transparent;"><span style="font-size:13px;font-style:italic;"><span style="white-space:pre-wrap;">        </span>polydata-&gt;Delete();</span></div>
<div style="background-color:transparent;"><span style="font-size:13px;font-style:italic;"><span style="white-space:pre-wrap;">        </span>polydata = output;</span></div>
<div style="background-color:transparent;"><span style="font-size:13px;font-style:italic;">&nbsp; &nbsp; }</span></div><div style="background-color:transparent;"><span style="font-style:italic;"><span style="font-size:13px;background-color:transparent;">&nbsp; &nbsp; tr-&gt;Delete();</span><br>
</span></div><div style="background-color:transparent;"><span style="font-size:13px;font-style:italic;">&nbsp; &nbsp; polydata-&gt;Delete();</span></div><div style="font-style:normal;font-size:13px;background-color:transparent;">
<span style="font-size:13px;"><br></span></div><div style="font-style:normal;font-size:13px;background-color:transparent;">
This is working fine and I have no VTK leaks. Unfortunately, I'm noticing that memory for my program increases instead of remaining constant.</div><div style="font-style:normal;font-size:13px;background-color:transparent;">
What's wrong with theses few lines?</div><div style="font-style:normal;font-size:13px;background-color:transparent;"><br></div><div style="font-style:normal;font-size:13px;background-color:transparent;">
By the way, using DeepCopy to save output data is working:</div><div style="background-color:transparent;"><span style="font-size:13px;"><span style="white-space:pre-wrap;">        </span><span style="font-style:italic;">polydata = vtkPolyData::New();</span></span></div>
<div style="background-color:transparent;"><span style="font-size:13px;font-style:italic;"><span style="white-space:pre-wrap;">        </span>polydata-&gt;DeepCopy(output);</span></div>
<div style="background-color:transparent;"><span style="font-size:13px;font-style:italic;"><span style="white-space:pre-wrap;">        </span>output-&gt;Delete();</span></div>
<div style="font-style:normal;font-size:13px;background-color:transparent;"><span style="font-size:13px;">But I would like to avoid to deep copy data when I only need to add a reference to the pointer. I also would like to avoid the use of vtkSmartPointer.</span></div>
<div style="font-style:normal;font-size:13px;background-color:transparent;"><br></div><div style="font-style:normal;font-size:13px;background-color:transparent;">
Thank you for your help</div><div style="font-style:normal;font-size:13px;background-color:transparent;">Best.</div><div style="font-style:normal;font-size:13px;background-color:transparent;">
<br></div></div></div><br>_______________________________________________<br>
Powered by <a rel="nofollow" target="_blank" href="http://www.kitware.com/">www.kitware.com</a><br>
<br>
Visit other Kitware open-source projects at <a rel="nofollow" target="_blank" href="http://www.kitware.com/opensource/opensource.html">http://www.kitware.com/opensource/opensource.html</a><br>
<br>
Please keep messages on-topic and check the VTK FAQ at: <a rel="nofollow" target="_blank" href="http://www.vtk.org/Wiki/VTK_FAQ">http://www.vtk.org/Wiki/VTK_FAQ</a><br>
<br>
Follow this link to subscribe/unsubscribe:<br>
<a rel="nofollow" target="_blank" href="http://www.vtk.org/mailman/listinfo/vtkusers">http://www.vtk.org/mailman/listinfo/vtkusers</a><br>
<br></blockquote></div><br></div></div><br><br></div> </div> </div>  </div></body></html>