Article View: japan.comp.lang.visual-c++
Article #13Re: コンストラクタ内を避けるべき処理
From: Yoshio Kiya
Date: Mon, 08 May 2000 00:00
Date: Mon, 08 May 2000 00:00
28 lines
2129 bytes
2129 bytes
椎野さん、こんにちは、木屋です。 Yuki Shiino wrote in <8f44e1$7s1$1@news.cds.ne.jp> > X* xp = new X(); > > とした際に、メモリの確保には成功したものの、X::X()が何らかの例外を > 投げ、インスタンスの構築に失敗した場合には、確保されたメモリは開放 > されます。 ありゃ、じゃ、私の心配は、VC固有の仕様による物のようです。 MSDN により引用 > 例外処理 : コンストラクタの例外処理 > > コンストラクタ内から例外をスローするときは、前の「例外処理 > : 独自関数からの例外のスロー」で説明したように、例外をス > ローする前に、割り当てたオブジェクトとメモリをすべてクリア > する必要があります。 > > コンストラクタからの例外のスローは多少複雑です。コンストラ > クタが呼び出される前に、オブジェクト自体を格納するメモリ領 > 域が既に割り当てられているからです。そのオブジェクトのコン > ストラクタからは、オブジェクト自体が割り当てられているメモ > リ領域を解放できません。したがって、コンストラクタから例外 > をスローすると、オブジェクトがメモリ上に割り当てられたまま > になります。 === Nihon Application Co.,LTD. 木屋 善夫 kiya@nac.co.jp ===
Technical Details
Message-ID:
<8f5cue$rjs$2@newsgw8.odn.ne.jp>Path:
arc1-ca.pugleaf.net!unknown!not-for-mailReferences:
<8es3l3$kas$1@pin2.tky.plala.or.jp> <8eu2vv$pun$1@newsjp.mbn.or.jp> <8evptd$4m2$2@newsgw8.odn.ne.jp> <8f3v3k$4j8$3@news.cds.ne.jp> <8f44e1$7s1$1@news.cds.ne.jp>Show Full Headers
Complete Article Headers
X-Google-Language: Japanese,JIS X-Google-Thread: 10a2c7,d8108d20cf4aa80b X-Google-Attributes: gid10a2c7,public X-Google-Thread: f71b3,d8108d20cf4aa80b X-Google-Attributes: gidf71b3,public From: Yoshio Kiya <kiya@asahi.email.ne.jp> Subject: Re: コンストラクタ内を避けるべき処理 Date: 2000/05/08 Message-ID: <8f5cue$rjs$2@newsgw8.odn.ne.jp> X-Deja-AN: 620510510 Content-Transfer-Encoding: 7bit References: <8es3l3$kas$1@pin2.tky.plala.or.jp> <8eu2vv$pun$1@newsjp.mbn.or.jp> <8evptd$4m2$2@newsgw8.odn.ne.jp> <8f3v3k$4j8$3@news.cds.ne.jp> <8f44e1$7s1$1@news.cds.ne.jp> Content-Type: text/plain; charset="iso-2022-jp" X-Complaints-To: news@odn.ad.jp X-Trace: newsgw8.odn.ne.jp 957757198 28284 210.237.160.199 (8 May 2000 03:39:58 GMT) Organization: odn.ne.jp Mime-Version: 1.0 NNTP-Posting-Date: 8 May 2000 03:39:58 GMT Newsgroups: japan.comp.lang.visual-c++,fj.comp.lang.c++