lame question

Steven Schveighoffer schveiguy at yahoo.com
Mon Apr 18 06:02:46 PDT 2011


On Mon, 18 Apr 2011 04:31:26 -0400, %u <lenochware at gmail.com> wrote:

> Is it necessary free memory allocated for member of structure, like in  
> C? I
> suppose not (we have gc). Example:
>
> struct BITMAP {
> (...)
> ubyte[] pixels;
> }
>
> BITMAP* bitmap = new BITMAP;
> bitmap.pixels = new ubyte[100*100];
> (...)
>
> // delete bitmap.pixels; //not necessary?
>
> delete bitmap;

It is not necessary, because pixels will be collected by the GC sometime  
in the future.  It will *not* free pixel's data by calling delete on the  
BITMAP pointer.

Just a note, you may be tempted to use a destructor do effect the above  
(as is done in C++ commonly), but this is a very big mistake.

And one other note -- delete will eventually be deprecated.  In order to  
free memory, you must use clear and GC.free.

-Steve


More information about the Digitalmars-d mailing list