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=-2.9 required=5.0 tests=BAYES_00,FREEMAIL_FROM, MAILING_LIST_MULTI autolearn=unavailable autolearn_force=no version=3.4.4 X-Google-Thread: 103376,44ada043789a561c X-Google-Attributes: gid103376,public X-Google-Language: ENGLISH,ASCII-7-bit Path: g2news1.google.com!news4.google.com!news2.google.com!proxad.net!usenet-fr.net!news.enst.fr!melchior!cuivre.fr.eu.org!melchior.frmug.org!not-for-mail From: Duncan Sands Newsgroups: comp.lang.ada Subject: Re: Memory_Management Date: Tue, 19 Apr 2005 11:18:16 +0200 Organization: Cuivre, Argent, Or Message-ID: References: <6cf157bb.0504181739.5c9e1bbb@posting.google.com> NNTP-Posting-Host: lovelace.ada-france.org Mime-Version: 1.0 Content-Type: text/plain Content-Transfer-Encoding: 7bit X-Trace: melchior.cuivre.fr.eu.org 1113902316 80664 212.85.156.195 (19 Apr 2005 09:18:36 GMT) X-Complaints-To: usenet@melchior.cuivre.fr.eu.org NNTP-Posting-Date: Tue, 19 Apr 2005 09:18:36 +0000 (UTC) Cc: comp.lang.ada@ada-france.org To: Bini Return-Path: In-Reply-To: <6cf157bb.0504181739.5c9e1bbb@posting.google.com> X-Mailer: Evolution 2.2.1.1 X-Virus-Scanned: by amavisd-new-20030616-p10 (Debian) at ada-france.org X-BeenThere: comp.lang.ada@ada-france.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "Gateway to the comp.lang.ada Usenet newsgroup" List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Xref: g2news1.google.com comp.lang.ada:10564 Date: 2005-04-19T11:18:16+02:00 Hi Bini, maybe what is happening is this: > I1 := (AF.Controlled with Value => new Integer'(123)); here the right-hand-side (RHS) is an object of My_Data type. You assign it to I1, another object of My_Data type. After the assignment, RHS is finalized. This frees the memory - the same memory I1.Value is pointing to. In detail: (0) Memory is allocated to hold the integer 123. A pointer to the memory is in RHS.Value. (1) a bit-wise copy is made of RHS onto I1. I1.Value points to the integer. (2) Adjust is called on I1. Since you don't seem to have defined Adjust, this does nothing. (3) Finalize is called on RHS. This frees the memory holding 123. Now I1.Value is pointing to freed memory. You then look at I1.Value.all, which could be anything. You need to define Adjust. All the best, Duncan.