[Insight-users] `Image Memory Management

Luis Ibanez luis.ibanez@kitware.com
Tue, 10 Dec 2002 18:43:41 -0500


Hi David,

Well, the fact that the Data is available only
in the scope of the ImportImageContainer is actually
an advantage since it will take care of memory
release.

If what you want is to use this pixel data in another
image, you may want to instantiate another image and
use the SetPixelContainer() method like:

   newimage->SetPixelContainer(  pixelContainer );

The memory will be available as long as the
pixelContainter SmartPointer or the newimage
SmartPointer exist.


The flag that controls memory release in the
ImportImageContainer is :

   bool  m_ContainerManageMemory;

and it is set internally by the container.

We could consider adding a public Set() method to the
class API so you could put set the flag to off, then
let die the container and keep the memory...

This may probably make sense if you are exporting the
data to another library where you don't whant to manage
ITK objects anymore.

Is that the case ?

Please let us know,


   Thanks


    Luis


=====================================

David Holmes wrote:

> Luis-
> 
> thank you for your quick response.  I was actually
> looking into the ImportImageContainer when I received
> your note.  I implemented your suggestions, but I
> think that I still have a problem.  Now the data is
> limited to the scope of the ImportImageContainer
> Pointer.  Because I am simply grabbing the container
> out of the Image, the flag that controls memory
> management has already been set to TRUE (presumably by
> the filter object), so the data will still be
> destroyed outside the scope of the
> ImportImageContainer Pointer.  As such, when I try and
> access the array (by way of the pointer to the data
> outside the function), it core dumps.  I've tried to
> find a way to reset that flag, but haven't found it
> yet.
> 
> does this make sense?
> 
> I don't know, but if you can help me, I'd appreciate
> it.
> 
> Thanks
> 
> david
> 
> 
>