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