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,703c4f68db81387d X-Google-Thread: 109fba,703c4f68db81387d X-Google-Thread: 115aec,703c4f68db81387d X-Google-Thread: f43e6,703c4f68db81387d X-Google-Attributes: gid103376,gid109fba,gid115aec,gidf43e6,public X-Google-Language: ENGLISH,ASCII-7-bit Path: g2news1.google.com!news1.google.com!proxad.net!newsfeed.stueberl.de!feed.news.tiscali.de!news.belwue.de!news.tu-darmstadt.de!tsicnews.teliasonera.com!news.otenet.gr!news.grnet.gr!newsfd02.forthnet.gr!not-for-mail From: Ioannis Vranos Newsgroups: comp.lang.ada,comp.lang.c++,comp.realtime,comp.software-eng Subject: Re: [OT] Re: Teaching new tricks to an old dog (C++ -->Ada) Date: Fri, 11 Mar 2005 14:24:02 +0200 Organization: FORTHnet S.A., Atthidon 4, GR-17671 Kalithea, Greece, Tel: +30 2109559000, Fax: +30 2109559333, url: http://www.forthnet.gr Message-ID: <1110543845.799893@athnrd02> References: <4229bad9$0$1019$afc38c87@news.optusnet.com.au> <1110032222.447846.167060@g14g2000cwa.googlegroups.com> <871xau9nlh.fsf@insalien.org> <3SjWd.103128$Vf.3969241@news000.worldonline.dk> <87r7iu85lf.fsf@insalien.org> <1110052142.832650@athnrd02> <1lr611thktbau$.1dj95z21h7l5v.dlg@40tude.net> <97kpu5gkgo1r$.kc4nx7cxjziw$.dlg@40tude.net> <1110543138.32171@athnrd02> NNTP-Posting-Host: athnrd02.forthnet.gr Mime-Version: 1.0 Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit X-Trace: athprx02.forthnet.gr 1110543845 7809 193.92.150.73 (11 Mar 2005 12:24:05 GMT) X-Complaints-To: abuse@forthnet.gr NNTP-Posting-Date: Fri, 11 Mar 2005 12:24:05 +0000 (UTC) User-Agent: Mozilla Thunderbird 1.0 (Windows/20041206) X-Accept-Language: en-us, en In-Reply-To: <1110543138.32171@athnrd02> Cache-Post-Path: newsfd02!unknown@ppp16-adsl-170.ath.forthnet.gr Xref: g2news1.google.com comp.lang.ada:9126 comp.lang.c++:45118 comp.realtime:1269 comp.software-eng:4835 Date: 2005-03-11T14:24:02+02:00 List-Id: Ioannis Vranos wrote: > Regarding Storage_Error exception, C++'s one is bad_alloc, which is > guaranteed to *never fail* in case of memory starvation. > > About stack. Strictly speaking, C++ standard does not define any stack > apart from a stack container , but "automatic storage" and "dynamic > storage". > > > It is common though the first to be called "stack" and the second "heap" > or "free store". > > > It is an implementation's/platform's job to provide stack and heap. > > > Usually the stack is limited in comparison to the heap, and it sounds > strange to me that in Ada there is a large stack. My guess is that you > are using the heap for data storage implicitly(?) and you think you are > using the stack. As is the case when I use a vector for example. The object itself is in the stack, however internally it allocates memory in the heap to store its members, which releases with its destructor when it is destroyed (e.g. in the end of its scope). > Are you familiar with "Resource Acquisition is Initialisation" (RAII) > technique? This is supported by C++ and used by all standard library > containers. In summary RAII is a technique which is used to encapsulate resources (as vector does for memory and is used as a general array, and string also and is used as a string type), with the constructor allocating the resources and the destructor releasing them, and thus producing bullet-proof code. When an exception is thrown or the object reaches the end of its scope, the object gets destroyed releasing the resources via its destructor. RAII can be used for any kind of resources, IP connections, memory, files, etc. All standard library containers use RAII. -- Ioannis Vranos http://www23.brinkster.com/noicys