<div><strong>Hi Richard,</strong></div><div> </div><div><strong>I tested on a simple version as following:</strong></div><div> </div><div>#define _CRTDBG_MAP_ALLOC<br>#include &lt;stdlib.h&gt;<br>#include &lt;crtdbg.h&gt;</div>
<div>#include &quot;itkImage.h&quot;<br>#include &quot;itkImageFileReader.h&quot;<br>#include &quot;itkImageFileWriter.h&quot;<br>#include &quot;itkReconstructionByDilationImageFilter.h&quot;</div><div>int main()<br>{<br>
 typedef unsigned char   PixelType;<br> const unsigned int Dimension = 2;<br> typedef itk::Image&lt; PixelType, Dimension &gt; ImageType;<br> typedef itk::ImageFileReader&lt; ImageType &gt;  ReaderType;<br> typedef itk::ImageFileWriter&lt; ImageType &gt;  WriterType;<br>
 <br> const char  *inputFilenameMarker  = &quot;C:\\work\\MeVisData\\marker.tif&quot;; <br> const char  *inputFilenameMask  = &quot;C:\\work\\MeVisData\\mask.tif&quot;; <br>    //const char  *outputFilename = &quot;C:\\TYwork\\MeVisData\\ITKresult1.tif&quot;;</div>
<div> // Get marker image<br> ReaderType::Pointer reader = ReaderType::New();<br> reader-&gt;SetFileName( inputFilenameMarker  );  <br> reader-&gt;Update();  <br> ImageType::Pointer markerImage = ImageType::New();<br> markerImage = reader-&gt;GetOutput();<br>
 markerImage-&gt;DisconnectPipeline(); <br> </div><div> // Get mask image<br> //ReaderType::Pointer reader = ReaderType::New();<br> reader-&gt;SetFileName( inputFilenameMask  );  <br> reader-&gt;Update();  <br> ImageType::Pointer maskImage = ImageType::New();<br>
 maskImage = reader-&gt;GetOutput();</div><div> //filter</div><div> typedef itk::ReconstructionByDilationImageFilter&lt;ImageType, ImageType&gt; FilterType;<br> FilterType::Pointer filter = FilterType::New();<br> filter-&gt;SetMarkerImage(markerImage);<br>
 filter-&gt;SetMaskImage(maskImage);<br> filter-&gt;Update(); <br> <br> _CrtDumpMemoryLeaks();<br>}</div><div> </div><div><strong>Memory leak is still seen. The first memory leak size is the same as the mask image.</strong></div>
<div><strong></strong> </div><div><strong>The memory leak log is as following:</strong></div><div> </div><div>Detected memory leaks!<br>Dumping objects -&gt;<br>{63766} normal block at 0x01F0DAD8, 147492 bytes long.<br> Data: &lt;                &gt; FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF <br>
{63765} normal block at 0x01EE89B8, 4 bytes long.<br> Data: &lt;    &gt; 00 00 00 00 <br>{63733} normal block at 0x01EE89F8, 8 bytes long.<br> Data: &lt; W  8   &gt; 80 57 EB 01 38 04 EC 01 <br>{63731} normal block at 0x01EE8DB8, 4 bytes long.<br>
 Data: &lt;    &gt; E0 87 EE 01 <br>{63730} normal block at 0x01EE8938, 64 bytes long.<br> Data: &lt;,        Z      &gt; 2C C5 9E 00 01 00 00 00 E8 5A C0 00 FF FF FF FF <br>{63669} normal block at 0x01EE87E0, 280 bytes long.<br>
 Data: &lt;        PV      &gt; C4 BC 9E 00 01 00 00 00 50 56 C0 00 FF FF FF FF <br>{63608} normal block at 0x01EC0590, 9788 bytes long.<br> Data: &lt;4        V      &gt; 34 96 9F 00 01 00 00 00 88 56 C0 00 FF FF FF FF <br>
{63547} normal block at 0x01EC4660, 8 bytes long.<br> Data: &lt;l       &gt; 6C 99 EE 01 00 00 00 00 <br>{63546} normal block at 0x01EC0090, 8 bytes long.<br> Data: &lt;P       &gt; 50 99 EE 01 00 00 00 00 <br>{63545} normal block at 0x01EE9540, 8 bytes long.<br>
 Data: &lt;T       &gt; 54 99 EE 01 00 00 00 00 <br>{63544} normal block at 0x01EE96D8, 8 bytes long.<br> Data: &lt;8       &gt; 38 99 EE 01 00 00 00 00 <br>{63543} normal block at 0x01EE9900, 156 bytes long.<br> Data: &lt;        x[      &gt; 8C B4 9E 00 01 00 00 00 78 5B C0 00 FF FF FF FF <br>
{63353} normal block at 0x01EE9A78, 147492 bytes long.<br> Data: &lt;                &gt; FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF <br>{63340} normal block at 0x01EE8770, 52 bytes long.<br> Data: &lt;p   p   p       &gt; 70 87 EE 01 70 87 EE 01 70 87 EE 01 CD CD CD CD <br>
{63339} normal block at 0x01EE8728, 8 bytes long.<br> Data: &lt;h       &gt; 68 A9 EB 01 00 00 00 00 <br>{63338} normal block at 0x01EBA968, 20 bytes long.<br> Data: &lt;(       p       &gt; 28 87 EE 01 CD CD CD CD 70 87 EE 01 00 00 00 00 <br>
{63337} normal block at 0x01EBA920, 8 bytes long.<br> Data: &lt;$   h   &gt; 24 98 9F 00 68 A9 EB 01 ...</div><div>.......</div><div> </div><div><strong>The callback log on &quot;{63766} normal block at 0x01F0DAD8, 147492 bytes long&quot; is as following:</strong></div>
<div> </div><div>msvcr100d.dll!_heap_alloc_dbg_impl(unsigned int nSize, int nBlockUse, const char * szFileName, int nLine, int * errno_tmp)  Line 393 C++<br>  msvcr100d.dll!_nh_malloc_dbg_impl(unsigned int nSize, int nhFlag, int nBlockUse, const char * szFileName, int nLine, int * errno_tmp)  Line 239 + 0x19 bytes C++<br>
  msvcr100d.dll!_nh_malloc_dbg(unsigned int nSize, int nhFlag, int nBlockUse, const char * szFileName, int nLine)  Line 302 + 0x1d bytes C++<br>  msvcr100d.dll!malloc(unsigned int nSize)  Line 56 + 0x15 bytes C++<br>  msvcr100d.dll!operator new(unsigned int size)  Line 59 + 0x9 bytes C++<br>
  test.exe!operator new[](unsigned int count)  Line 6 + 0x9 bytes C++<br>  test.exe!itk::ImportImageContainer&lt;unsigned long,unsigned char&gt;::AllocateElements(unsigned long size)  Line 178 + 0x9 bytes C++<br>  test.exe!itk::ImportImageContainer&lt;unsigned long,unsigned char&gt;::Reserve(unsigned long size)  Line 86 + 0x13 bytes C++<br>
  test.exe!itk::Image&lt;unsigned char,2&gt;::Allocate()  Line 52 C++<br>  test.exe!itk::ImageSource&lt;itk::Image&lt;unsigned char,2&gt; &gt;::AllocateOutputs()  Line 216 + 0x26 bytes C++<br>  test.exe!itk::ReconstructionImageFilter&lt;itk::Image&lt;unsigned char,2&gt;,itk::Image&lt;unsigned char,2&gt;,std::greater&lt;unsigned char&gt; &gt;::GenerateData()  Line 112 + 0x12 bytes C++<br>
  test.exe!itk::ProcessObject::UpdateOutputData(itk::DataObject * __formal)  Line 987 + 0x12 bytes C++<br>  test.exe!itk::DataObject::UpdateOutputData()  Line 420 + 0x21 bytes C++<br>  test.exe!itk::ImageBase&lt;2&gt;::UpdateOutputData()  Line 285 C++<br>
  test.exe!itk::DataObject::Update()  Line 344 + 0xf bytes C++<br>  test.exe!itk::ProcessObject::Update()  Line 615 + 0x1c bytes C++<br>  test.exe!main()  Line 63 + 0x23 bytes C++<br>  test.exe!__tmainCRTStartup()  Line 555 + 0x19 bytes C<br>
  test.exe!mainCRTStartup()  Line 371 C<br>  kernel32.dll!75ad3c45()  <br>  [Frames below may be incorrect and/or missing, no symbols loaded for kernel32.dll] <br>  ntdll.dll!775337f5()  <br>  ntdll.dll!775337c8()  </div>
<div> </div><div>I am new to ITK and it is really hard for me to detect where the leak is.</div><div> </div><div>Thank you!</div><div> </div><div> </div><div>Tina</div><div><br><br> </div><div class="gmail_quote">On Mon, Sep 19, 2011 at 6:12 PM, Richard Beare <span dir="ltr">&lt;<a href="mailto:richard.beare@gmail.com">richard.beare@gmail.com</a>&gt;</span> wrote:<br>
<blockquote style="margin: 0px 0px 0px 0.8ex; padding-left: 1ex; border-left-color: rgb(204, 204, 204); border-left-width: 1px; border-left-style: solid;" class="gmail_quote">Do you have minimalist version of your code that shows the leak?<br>

<br>
Line 112 is the AllocateOutputs() call, which is a standard part of<br>
most filters.<br>
<div><div></div><div class="h5"><br>
On Tue, Sep 20, 2011 at 12:21 AM, qi yang &lt;<a href="mailto:tinaqiyang@gmail.com">tinaqiyang@gmail.com</a>&gt; wrote:<br>
&gt; Thanks for looking into this. I still haven&#39;t solved this issue.<br>
&gt;<br>
&gt; The following is the memory leak log from VS2010 output:<br>
&gt;<br>
&gt; Detected memory leaks!<br>
&gt; Dumping objects -&gt;<br>
&gt; {769} normal block at 0x09F40040, 1208320 bytes long.<br>
&gt;  Data: &lt; P G P G P G P G&gt; 00 50 C3 47 00 50 C3 47 00 50 C3 47 00 50 C3 47<br>
&gt; Object dump complete.<br>
&gt;<br>
&gt; Then I stopped at {769} where is the filter-&gt;update(), the call stack log is<br>
&gt; as following:<br>
&gt;<br>
&gt; msvcr100d.dll!_heap_alloc_dbg_impl(unsigned int nSize, int nBlockUse, const<br>
&gt; char * szFileName, int nLine, int * errno_tmp)  Line 393 C++<br>
&gt;   msvcr100d.dll!_nh_malloc_dbg_impl(unsigned int nSize, int nhFlag, int<br>
&gt; nBlockUse, const char * szFileName, int nLine, int * errno_tmp)  Line 239 +<br>
&gt; 0x19 bytes C++<br>
&gt;   msvcr100d.dll!_nh_malloc_dbg(unsigned int nSize, int nhFlag, int<br>
&gt; nBlockUse, const char * szFileName, int nLine)  Line 302 + 0x1d bytes C++<br>
&gt;   msvcr100d.dll!_malloc_dbg(unsigned int nSize, int nBlockUse, const char *<br>
&gt; szFileName, int nLine)  Line 160 + 0x1b bytes C++<br>
&gt;   mfc100ud.dll!operator new(unsigned int nSize)  Line 321 + 0x10 bytes C++<br>
&gt;   SA_Sgmt.exe!operator new[](unsigned int count)  Line 6 + 0x9 bytes C++<br>
&gt;   SA_Sgmt.exe!itk::ImportImageContainer&lt;unsigned<br>
&gt; long,float&gt;::AllocateElements(unsigned long size)  Line 178 + 0x19 bytes C++<br>
&gt;   SA_Sgmt.exe!itk::ImportImageContainer&lt;unsigned<br>
&gt; long,float&gt;::Reserve(unsigned long size)  Line 86 + 0x13 bytes C++<br>
&gt;   SA_Sgmt.exe!itk::Image&lt;float,2&gt;::Allocate()  Line 52 C++<br>
&gt;   SA_Sgmt.exe!itk::ImageSource&lt;itk::Image&lt;float,2&gt; &gt;::AllocateOutputs()<br>
&gt; Line 216 + 0x26 bytes C++<br>
&gt;   SA_Sgmt.exe!itk::ReconstructionImageFilter&lt;itk::Image&lt;float,2&gt;,itk::Image&lt;float,2&gt;,std::greater&lt;float&gt;<br>
&gt;&gt;::GenerateData()  Line 112 + 0x12 bytes C++<br>
&gt; When I commented the filter-&gt;update(), I don&#39;t see memory leak reported.<br>
&gt;<br>
&gt; I hope those information can give us more ideas.<br>
&gt;<br>
&gt; Thanks a lot,<br>
&gt; Tina<br>
&gt;<br>
&gt;<br>
&gt; On Sun, Sep 18, 2011 at 6:39 AM, Richard Beare &lt;<a href="mailto:richard.beare@gmail.com">richard.beare@gmail.com</a>&gt;<br>
&gt; wrote:<br>
&gt;&gt;<br>
&gt;&gt; I&#39;ve run a couple of tests with the mac leak detector and didn&#39;t see<br>
&gt;&gt; anything.<br>
&gt;&gt;<br>
&gt;&gt; 2011/9/17 Gaëtan Lehmann &lt;<a href="mailto:gaetan.lehmann@jouy.inra.fr">gaetan.lehmann@jouy.inra.fr</a>&gt;:<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt; Hi,<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt; The memory leak message is not more detailed than that?<br>
&gt;&gt; &gt; I&#39;m afraid we can&#39;t do much with that, unfortunately...<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt; Regards,<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt; Gaëtan<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt; Le 14 sept. 11 ā 18:11, qi yang a écrit :<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt;&gt; Hi,<br>
&gt;&gt; &gt;&gt;<br>
&gt;&gt; &gt;&gt; I have a memory leaking problem bothered me for hours...<br>
&gt;&gt; &gt;&gt;<br>
&gt;&gt; &gt;&gt; My VS2010 detected a big memory leak after &quot;filter-&gt;Update()&quot; of<br>
&gt;&gt; &gt;&gt; ReconstructionByDilationImageFilter.<br>
&gt;&gt; &gt;&gt; The related code is as following:<br>
&gt;&gt; &gt;&gt; typedef itk::ReconstructionByDilationImageFilter&lt;ImageType, ImageType&gt;<br>
&gt;&gt; &gt;&gt; FilterType;<br>
&gt;&gt; &gt;&gt;<br>
&gt;&gt; &gt;&gt; FilterType::Pointer filter = FilterType::New();<br>
&gt;&gt; &gt;&gt;<br>
&gt;&gt; &gt;&gt; filter-&gt;SetMarkerImage(markerImage);<br>
&gt;&gt; &gt;&gt;<br>
&gt;&gt; &gt;&gt; filter-&gt;SetMaskImage(maskImage);<br>
&gt;&gt; &gt;&gt;<br>
&gt;&gt; &gt;&gt; filter-&gt;Update();<br>
&gt;&gt; &gt;&gt;<br>
&gt;&gt; &gt;&gt; Do I need to release something after using the filter? What&#39;s the<br>
&gt;&gt; &gt;&gt; related<br>
&gt;&gt; &gt;&gt; function?<br>
&gt;&gt; &gt;&gt;<br>
&gt;&gt; &gt;&gt; Thanks for any tips!!<br>
&gt;&gt; &gt;&gt;<br>
&gt;&gt; &gt;&gt; Thanks,<br>
&gt;&gt; &gt;&gt; Tina<br>
&gt;&gt; &gt;&gt; _____________________________________<br>
&gt;&gt; &gt;&gt; Powered by <a href="http://www.kitware.com" target="_blank">www.kitware.com</a><br>
&gt;&gt; &gt;&gt;<br>
&gt;&gt; &gt;&gt; Visit other Kitware open-source projects at<br>
&gt;&gt; &gt;&gt; <a href="http://www.kitware.com/opensource/opensource.html" target="_blank">http://www.kitware.com/opensource/opensource.html</a><br>
&gt;&gt; &gt;&gt;<br>
&gt;&gt; &gt;&gt; Kitware offers ITK Training Courses, for more information visit:<br>
&gt;&gt; &gt;&gt; <a href="http://www.kitware.com/products/protraining.html" target="_blank">http://www.kitware.com/products/protraining.html</a><br>
&gt;&gt; &gt;&gt;<br>
&gt;&gt; &gt;&gt; Please keep messages on-topic and check the ITK FAQ at:<br>
&gt;&gt; &gt;&gt; <a href="http://www.itk.org/Wiki/ITK_FAQ" target="_blank">http://www.itk.org/Wiki/ITK_FAQ</a><br>
&gt;&gt; &gt;&gt;<br>
&gt;&gt; &gt;&gt; Follow this link to subscribe/unsubscribe:<br>
&gt;&gt; &gt;&gt; <a href="http://www.itk.org/mailman/listinfo/insight-users" target="_blank">http://www.itk.org/mailman/listinfo/insight-users</a><br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt; --<br>
&gt;&gt; &gt; Gaëtan Lehmann<br>
&gt;&gt; &gt; Biologie du Développement et de la Reproduction<br>
&gt;&gt; &gt; INRA de Jouy-en-Josas (France)<br>
&gt;&gt; &gt; tel: <a href="tel:%2B33%201%2034%2065%2029%2066" value="+33134652966">+33 1 34 65 29 66</a>    fax: 01 34 65 29 09<br>
&gt;&gt; &gt; <a href="http://mima2.jouy.inra.fr" target="_blank">http://mima2.jouy.inra.fr</a>  <a href="http://www.itk.org" target="_blank">http://www.itk.org</a><br>
&gt;&gt; &gt; <a href="http://www.bepo.fr" target="_blank">http://www.bepo.fr</a><br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt; _____________________________________<br>
&gt;&gt; &gt; Powered by <a href="http://www.kitware.com" target="_blank">www.kitware.com</a><br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt; Visit other Kitware open-source projects at<br>
&gt;&gt; &gt; <a href="http://www.kitware.com/opensource/opensource.html" target="_blank">http://www.kitware.com/opensource/opensource.html</a><br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt; Kitware offers ITK Training Courses, for more information visit:<br>
&gt;&gt; &gt; <a href="http://www.kitware.com/products/protraining.html" target="_blank">http://www.kitware.com/products/protraining.html</a><br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt; Please keep messages on-topic and check the ITK FAQ at:<br>
&gt;&gt; &gt; <a href="http://www.itk.org/Wiki/ITK_FAQ" target="_blank">http://www.itk.org/Wiki/ITK_FAQ</a><br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt; Follow this link to subscribe/unsubscribe:<br>
&gt;&gt; &gt; <a href="http://www.itk.org/mailman/listinfo/insight-users" target="_blank">http://www.itk.org/mailman/listinfo/insight-users</a><br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt;<br>
&gt;<br>
&gt;<br>
</div></div></blockquote></div><br>