comp.lang.ada
 help / color / mirror / Atom feed
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.




  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