comp.lang.ada
 help / color / mirror / Atom feed
From: Mats Weber <Mats.Weber@elca-matrix.ch>
Subject: Re: How do functions return unbounded arrays?
Date: 1998/06/18
Date: 1998-06-18T00:00:00+00:00	[thread overview]
Message-ID: <35885BE1.B1CE0503@elca-matrix.ch> (raw)
In-Reply-To: 35865075.9D7DCBD@cl.cam.ac.uk


Markus Kuhn wrote:

> John Herro wrote:
> > The following program raises Storage_Error on my machine when
> > compiled with Open Ada (an Ada 83 compiler).
> 
> > with Text_IO;
> > procedure Test is
> >    S : String(1 .. 18);
> > begin
> >    for L in Long_Integer range
> >         10_000_000 .. 99_999_998 loop
> >       S := Long_Integer'Image(L) &
> >            Long_Integer'Image(L + 1);
> >    end loop;
> > end Test;

> Thanks for that example. That is exactly an implementation of
> of my bad gut feeling about the lack of a clear description in
> the RM that guarantees me when these secretly allocated heap
> blocks will be deallocated. Some guarantee that whatever a variable
> length function return secretly allocates does not survive the next
> semicolon would be very reassuring, otherwise programmers have
> little idea about what memory leaks their code might contain and
> this could be a safety risk.
> [...]

You seem to be considering this as expected behavior, but I think it's not.
It's a compiler bug. The compilers I have used do not leak storage on such
constructs. Leaking memory when allocators are called repeatedly without
deallocation is OK, but leaking storage on constructs that can be implemented
on the stack is not OK.

It is true that Ada 83 lacks specification in that respect (e.g.
Unchecked_Deallocation is not forced to do anything but set the pointer to
null). I do not know exactly what Ada 95 has to say on memory leaks for
stack-implementable constructs.




  parent reply	other threads:[~1998-06-18  0:00 UTC|newest]

Thread overview: 15+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
1998-06-14  0:00 How do functions return unbounded arrays? Markus Kuhn
1998-06-14  0:00 ` Robert A Duff
1998-06-15  0:00 ` John Herro
     [not found]   ` <35865075.9D7DCBD@cl.cam.ac.uk>
1998-06-17  0:00     ` Gavin Finnie
1998-06-17  0:00       ` Rod Chapman
1998-06-21  0:00         ` Robert Dewar
1998-06-21  0:00         ` Robert Dewar
1998-06-21  0:00       ` Robert Dewar
1998-06-17  0:00     ` Matthew Heaney
1998-06-21  0:00       ` Robert Dewar
1998-06-18  0:00     ` Mats Weber [this message]
1998-06-21  0:00       ` Robert Dewar
1998-06-17  0:00   ` Mark D. McKinney
1998-06-17  0:00   ` Matthew Heaney
1998-06-21  0:00   ` Robert Dewar
replies disabled

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox