From: Marius Amado Alves <amado.alves@netcabo.pt>
To: comp.lang.ada@ada-france.org
Subject: Re: Memory leak - What the ...?
Date: Tue, 12 Oct 2004 17:05:42 +0100
Date: 2004-10-12T17:05:42+01:00 [thread overview]
Message-ID: <mailman.287.1097597146.390.comp.lang.ada@ada-france.org> (raw)
In-Reply-To: <dcb57d1e.0410120647.560af6a@posting.google.com>
>>I still lack an understandable explanation of why this does not leak:
>>
>> if This.Data /= null then
>> This.Data := new Stream_Element_Array'(This.Data.all);
>> end if;
>
> Adjust is called just after the members of the record have been
> copied. So imagine you have
>
> A := B;
>
> When Adjust(A) gets called, you will have
>
> A.Data = B.Data
>
> Since Data is an access type, you have a shallow copy where both A and
> B have members pointing to the same heap space.
>
> In the Adjust, what A does is replicate the pointed data to get a new
> pointer and a deep copy where A and B point to different heap copies.
>
> Additionally, before A being overwritten, Finalize(A) is called just
> in case it needs to free some memory.
>
> Hope this helps.
Not really. The only way for leaking not to take place is for the old
This.Data value being held somewhere. Where? Or for Finalize (A) to be
called before Adjust, but then This.Data should become null, no? And
then the if condition would never hold. The alternative being This.Data
pointing to garbage.
next prev parent reply other threads:[~2004-10-12 16:05 UTC|newest]
Thread overview: 51+ messages / expand[flat|nested] mbox.gz Atom feed top
2004-10-10 21:33 Memory leak - What the ...? Alex R. Mosteo
2004-10-10 22:05 ` Marius Amado Alves
2004-10-11 8:18 ` Alex R. Mosteo
2004-10-11 11:04 ` Marius Amado Alves
2004-10-11 13:02 ` Martin Krischik
2004-10-11 8:25 ` Martin Krischik
2004-10-11 8:56 ` Martin Dowie
2004-10-11 12:59 ` Martin Krischik
2004-10-11 1:40 ` Stephen Leake
2004-10-11 8:59 ` Alex R. Mosteo
2004-10-11 18:24 ` Stephen Leake
2004-10-12 3:02 ` Brian May
2004-10-12 8:45 ` Jean-Pierre Rosen
[not found] ` <mailman.282.1097576360.390.comp.lang.ada@ada-france.org>
[not found] ` <uvegkc.jrg.ln@skymaster>
2004-10-12 12:31 ` Marius Amado Alves
2004-10-12 14:47 ` Alex R. Mosteo
2004-10-12 16:05 ` Marius Amado Alves [this message]
2004-10-12 19:37 ` Björn Persson
2004-10-12 22:10 ` Marius Amado Alves
[not found] ` <416C5646.1020506@netcabo.pt>
2004-10-13 0:17 ` Stephen Leake
[not found] ` <u655f1ng9.fsf@acm.org>
2004-10-13 6:24 ` Marius Amado Alves
[not found] ` <416C00D6.90402@netcabo.pt>
2004-10-13 0:14 ` Stephen Leake
[not found] ` <416BAFA4.7020400@netcabo.pt>
2004-10-13 0:07 ` Stephen Leake
2004-10-13 13:45 ` Hyman Rosen
2004-10-14 9:15 ` Martin Krischik
2004-10-14 17:21 ` Hyman Rosen
[not found] ` <uis9f1nw3.fsf@acm.org>
[not found] ` <mailman.301.1097650377.390.comp.lang.ada@ada-france.org>
2004-10-13 7:40 ` Dmitry A. Kazakov
2004-10-13 17:44 ` Mark Lorenzen
2004-10-14 8:03 ` Dmitry A. Kazakov
2004-10-18 0:33 ` Brian May
2004-10-12 12:05 ` Alex R. Mosteo
2004-10-13 0:12 ` Stephen Leake
2004-10-13 8:39 ` Pascal Obry
2004-10-13 13:11 ` Memory leak - What the ...? - FOUND Alex R. Mosteo
2004-10-17 0:45 ` Memory leak - What the ...? Brian May
2004-10-13 0:32 ` Matthew Heaney
2004-10-18 0:26 ` Brian May
2004-10-13 0:27 ` Matthew Heaney
2004-10-13 7:58 ` Martin Krischik
2004-10-13 13:01 ` Alex R. Mosteo
2004-10-13 0:25 ` Matthew Heaney
2004-10-13 12:26 ` Stephen Leake
2004-10-13 14:45 ` Matthew Heaney
2004-10-13 23:45 ` Brian May
2004-10-14 1:33 ` Jeffrey Carter
2004-10-11 8:04 ` Martin Dowie
2004-10-12 10:47 ` Alex R. Mosteo
2004-10-12 15:07 ` Alex R. Mosteo
2004-10-13 14:53 ` Matthew Heaney
-- strict thread matches above, loose matches on Subject: below --
2004-10-11 9:50 Christoph Karl Walter Grein
2004-10-11 10:21 Christoph Karl Walter Grein
2004-10-14 4:30 Christoph Karl Walter Grein
replies disabled
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox