From: "Peter C. Chapin" <pchapin@sover.net>
Subject: Re: memory management in Ada: tedious without GC?
Date: Fri, 16 May 2008 18:59:20 -0400
Date: 2008-05-16T18:59:20-04:00 [thread overview]
Message-ID: <482e11c6$0$11203$4d3efbfe@news.sover.net> (raw)
In-Reply-To: <9f2c2db4-d6c1-4cdf-884c-5cbc26ac7701@d1g2000hsg.googlegroups.com>
Maciej Sobczak wrote:
> In Ada RAII is realized with controlled types.
Controlled types in Ada are great, but I think C++ has a bit of an edge
in this area (not considering the issue of the type hierarchy). In Ada,
the compiler calls Adjust after it has finalized the object on the left
side of an assignment. In C++ operator=() has access to both sides of
the assignment at once. This makes it easier to write exception safe
assignment operators by copying the state of the source object *before*
destroying the target. It doesn't seem like that's possible with Ada
controlled types.
I've worked around this by declaring such types limited, using
Limited_Controlled, and living without a user defined assignment
operation. This seems to be a feasible way to handle the situation,
especially in Ada 2005 which allows functions to return limited types.
Anyway, to the OP... yes, RAII is available in Ada although the precise
details of how to set it up are a bit different than in C++. Be aware
that Ada uses the word "finalize" differently than the way it is used in
the Java community. In Ada finialization is more like C++ destruction.
It is deterministic.
Peter
next prev parent reply other threads:[~2008-05-16 22:59 UTC|newest]
Thread overview: 70+ messages / expand[flat|nested] mbox.gz Atom feed top
2008-05-16 17:44 memory management in Ada: tedious without GC? jhc0033
2008-05-16 18:56 ` Ludovic Brenta
2008-05-16 20:42 ` Maciej Sobczak
2008-05-16 21:45 ` Ivan Levashew
2008-05-16 22:59 ` Peter C. Chapin [this message]
2008-05-17 5:24 ` jhc0033
2008-05-17 7:50 ` Ivan Levashew
2008-05-16 23:05 ` Randy Brukardt
2008-05-19 3:50 ` Matthew Heaney
2008-05-19 7:55 ` Dmitry A. Kazakov
2008-05-19 13:18 ` Georg Bauhaus
2008-05-19 14:16 ` Dmitry A. Kazakov
2008-05-23 23:15 ` Robert A Duff
2008-05-24 0:45 ` Randy Brukardt
2008-05-24 8:25 ` Dmitry A. Kazakov
2008-05-24 16:14 ` Robert A Duff
2008-05-24 19:04 ` Dmitry A. Kazakov
2008-05-24 20:52 ` Robert A Duff
2008-05-25 8:12 ` Dmitry A. Kazakov
2008-05-25 11:28 ` Maciej Sobczak
2008-05-25 12:35 ` Robert A Duff
2008-05-26 8:16 ` Dmitry A. Kazakov
2008-05-24 19:39 ` Georg Bauhaus
2008-05-24 20:45 ` Robert A Duff
2008-05-19 8:35 ` Maciej Sobczak
2008-05-19 15:11 ` Matthew Heaney
2008-05-19 21:13 ` Maciej Sobczak
2008-05-23 23:03 ` Robert A Duff
2008-05-24 0:12 ` Adam Beneschan
2008-05-16 22:45 ` anon
2008-05-17 7:34 ` Pascal Obry
2008-05-17 15:11 ` Bob Klungle
2008-05-17 15:27 ` Pascal Obry
2008-05-17 16:18 ` Georg Bauhaus
2008-05-20 8:04 ` Ole-Hjalmar Kristensen
2008-05-20 8:01 ` Ole-Hjalmar Kristensen
2008-05-20 10:03 ` Martin Krischik
2008-05-17 17:23 ` Martin Krischik
2008-05-17 16:51 ` Maciej Sobczak
2008-05-17 17:45 ` Pascal Obry
2008-05-17 22:28 ` Samuel Tardieu
2008-05-18 7:03 ` Martin Krischik
2008-05-18 8:50 ` jhc0033
2008-05-18 9:31 ` Dmitry A. Kazakov
2008-05-18 14:10 ` Maciej Sobczak
2008-05-18 14:59 ` Dmitry A. Kazakov
2008-05-18 20:51 ` Maciej Sobczak
2008-05-19 8:36 ` Dmitry A. Kazakov
2008-05-18 15:03 ` Martin Krischik
2008-05-18 18:27 ` jhc0033
2008-05-19 4:12 ` Matthew Heaney
2008-05-19 8:39 ` Maciej Sobczak
2008-05-19 15:37 ` Matthew Heaney
2008-05-19 21:21 ` Maciej Sobczak
2008-05-19 23:02 ` Matthew Heaney
2008-05-19 10:27 ` Martin Krischik
2008-05-17 22:42 ` Peter C. Chapin
2008-05-18 6:58 ` Martin Krischik
2008-05-18 6:52 ` Martin Krischik
2008-05-18 14:16 ` Maciej Sobczak
2008-05-17 14:30 ` Brian Drummond
2008-05-17 16:47 ` Maciej Sobczak
2008-05-19 14:45 ` Brian Drummond
2008-05-20 7:42 ` Maciej Sobczak
2008-05-20 18:01 ` jayessay
2008-05-18 8:06 ` Simon Wright
2008-05-18 14:21 ` Maciej Sobczak
2008-05-18 20:48 ` Simon Wright
2008-05-19 14:40 ` Brian Drummond
2008-05-19 3:44 ` Matthew Heaney
replies disabled
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox