comp.lang.ada
 help / color / mirror / Atom feed
From: "Matthew Heaney" <mheaney@on2.com>
Subject: Re: Memory leak - What the ...?
Date: Wed, 13 Oct 2004 10:45:38 -0400
Date: 2004-10-13T14:33:10+00:00	[thread overview]
Message-ID: <416d3ca6$0$36214$39cecf19@news.twtelecom.net> (raw)
In-Reply-To: mailman.304.1097670377.390.comp.lang.ada@ada-france.org


"Stephen Leake" <stephen_leake@acm.org> wrote in message
news:mailman.304.1097670377.390.comp.lang.ada@ada-france.org...
> Surely any halfway decent compiler would optimize these to be the
> same?
>
> Hmm. Perhaps declaring an object requires calling Initialize, Adjust,
> and Finalize, unless the compiler can _prove_ those subprograms have
> no side-effects, which it probably can't do. Is that your point?

Something like that.  If I have this:

function Op return CT is --some controlled type
   O : CT;
begin
   O.X := ...;
   return O;
end;

then local controlled object O must be Initialize'd when it is declared, and
Finalize'd when the scope of its declaration ends.

If you do it this way:

function Op return CT is
begin
   return CT'(Controlled with X => ...);
end;

then the compiler can probably build the return value in place:

declare
    O : CT := Op;
begin

This is similar to the return-value optimization in C++.

As another example, the AI-302 set functions Union, Intersection, etc, are
implemented this way:

function Union (L, R : Set) return Set is
   Tree : Tree_Type;  --ordered set uses red-black tree (a type which isn't
controlled)
begin
   ... -- build Tree
   return Set'(Controlled with Tree);
end;






  reply	other threads:[~2004-10-13 14:45 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
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 [this message]
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