From mboxrd@z Thu Jan 1 00:00:00 1970 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on polar.synack.me X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham autolearn_force=no version=3.4.4 X-Google-Thread: 103376,ee06257af909a235 X-Google-Attributes: gid103376,public X-Google-Language: ENGLISH,ASCII Path: g2news1.google.com!news4.google.com!out02b.usenetserver.com!news.usenetserver.com!in01.usenetserver.com!news.usenetserver.com!in03.usenetserver.com!news.usenetserver.com!pc03.usenetserver.com!news.flashnewsgroups.com-b7.4zTQh5tI3A!not-for-mail Newsgroups: comp.lang.ada Subject: Re: Finalization of static package variables References: <4640f20b$1@news.upm.es> <4642493f@news.upm.es> From: Stephen Leake Date: Thu, 10 May 2007 06:55:57 -0400 Message-ID: User-Agent: Gnus/5.1006 (Gnus v5.10.6) Emacs/21.3 (windows-nt) Cancel-Lock: sha1:5DXULoBQVIajEO7WmTw59XlJ7mY= MIME-Version: 1.0 Content-Type: text/plain; charset=iso-8859-1 Content-Transfer-Encoding: 8bit X-Complaints-To: abuse@flashnewsgroups.com Organization: FlashNewsgroups.com X-Trace: b73af4642fa48759e00d418689 Xref: g2news1.google.com comp.lang.ada:15709 Date: 2007-05-10T06:55:57-04:00 List-Id: Manuel Collado writes: > Stephen Leake escribi�: >> Manuel Collado writes: >> >>> Variables declared in the global scope of a package body seem not to >>> be finalized automatically at the end of the whole program (using GNAT >>> 3.15p on WindowsXP). >> [...] >>> After several trial-and-error attemps, an Unchecked_Deallocation on >>> these variables seems to do the trick (the whole program terminates >>> smoothly). >> Unchecked_Deallocation is used on access variables (aka "pointers"). >> Such variables are _not_ automatically finalized by Ada; calling >> Unchecked_Deallocation is the standard-compliant way to finalize them. >> >>> 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. >> What version of the ARM are you quoting? When you say "ARM" without a >> year, it implies "current" which means "Ada 2007" (or, informally, >> "Ada 2005"). > > Doesn't "using GNAT 3.15p" give you any hint :-) ? Ah, sorry, forgot that part. -- -- Stephe