🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: japan.comp.lang.visual-c++
Article #13

Re: コンストラクタ内を避けるべき処理

#13
From: Yoshio Kiya
Date: Mon, 08 May 2000 00:00
28 lines
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-mail
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>

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++