comp.lang.ada
 help / color / mirror / Atom feed
From: Manuel Collado <m.collado@lml.ls.fi.upm.es>
Subject: Re: Finalization of static package variables
Date: Fri, 11 May 2007 20:12:12 +0200
Date: 2007-05-11T20:12:12+02:00	[thread overview]
Message-ID: <4644b24e$1@news.upm.es> (raw)
In-Reply-To: <uk5vhvtfm.fsf@stephe-leake.org>

Stephen Leake escribi�:
> Manuel Collado <m.collado@lml.ls.fi.upm.es> writes:
>> Stephen Leake escribi�:
>>> Manuel Collado <m.collado@lml.ls.fi.upm.es> writes:
>>> ...
>>>> But this is probably not standard-conformant (ARM 13.11.2-16).
>>> This paragraph says:
>>>     Evaluating a name that denotes a nonexistent object is erroneous.
>>>     The execution of a call to an instance of Unchecked_Deallocation
>>>     is erroneous if the object was created other than by an allocator
>>>     for an access type whose pool is Name'Storage_Pool.
>>> I don't see how that is relevant to your problem.
>> "... erroneous ... if the object was created other than by an
>> allocator for an access type whose pool is Name'Storage_Pool."
>>
>> Are static package variables allocated in this pool?
> 
> static package variables are created in the heap.
> 
> If they are _pointers_, the objects that they point to are allocated in
> some pool.
> 
> There is a big difference between a pointer variable, and the object
> it points to.

That's what I've teached to my students for decades :-)

But an access variable can refer to a static variable. Is the following 
Ada95 code schema legal? What about Ada200x (or just Ada, if you want)? 
It seems to work in GNAT-3.15p (it lets finalize 'Edit'), but ...

-------------------------------------------------
package body View_Editor is

    Edit: aliased Dialog_Type :=
       Dialog (420, 350, "Conversion Rates", 'Q', Main_Font);

[...snipped...]

    procedure Editor_Destroy is
       type Dialog_Access is access all Dialog_Type;
       procedure Dispose is
          new Ada.Unchecked_Deallocation (
          Object => Dialog_Type,
          Name   => Dialog_Access );
       Pointer: Dialog_Access := Edit'access;
    begin
       Dispose (Pointer);
    end Editor_Destroy;

end View_Editor;
--------------------------------------------------

Thanks.
-- 
Manuel Collado - http://lml.ls.fi.upm.es/~mcollado



  reply	other threads:[~2007-05-11 18:12 UTC|newest]

Thread overview: 25+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2007-05-08 21:55 Finalization of static package variables Manuel Collado
2007-05-09  8:13 ` Alex R. Mosteo
2007-05-09  8:20 ` Stephen Leake
2007-05-09 15:15   ` Adam Beneschan
2007-05-09 16:01     ` Markus E Leypold
2007-05-09 22:00     ` Manuel Collado
2007-05-09 23:27       ` Adam Beneschan
2007-05-10  4:52         ` Jeffrey R. Carter
2007-05-16  0:41           ` Randy Brukardt
2007-05-10  8:16         ` Alex R. Mosteo
2007-05-16  0:36         ` Randy Brukardt
2007-05-16 14:06           ` Adam Beneschan
2007-05-16 16:47             ` Jeffrey R. Carter
2007-05-16 19:10             ` Randy Brukardt
2007-05-22  4:41               ` christoph.grein
2007-05-22  6:25                 ` tmoran
2007-05-22 22:19                   ` Randy Brukardt
2007-05-10 10:57       ` Stephen Leake
2007-05-09 22:19   ` Manuel Collado
2007-05-10  5:38     ` AW: " Grein, Christoph (Fa. ESG)
2007-05-10 10:55     ` Stephen Leake
2007-05-11 18:12       ` Manuel Collado [this message]
2007-05-11 18:26         ` Robert A Duff
2007-05-12 19:17           ` Finalization of static package variables - summary Manuel Collado
2007-05-16  0:49             ` Randy Brukardt
replies disabled

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