[cppll:7231] オブジェクトの解体
- Subject:
- [cppll:7231] オブジェクトの解体
- From:
- Suzuki Satoshi <suzuki.satoshi@...>
- Date:
- Tue, 4 Feb 2003 16:03:10 +0900
- X-Mailer:
- Microsoft Outlook CWS, Build 9.0.2416 (9.0.2911.0)
- Message-Id:
- <000401c2cc1b$7b0b0be0$50a5900a‐at‐sys.nttcom.co.jp>
すずです。
プログラミング言語C++第3版によると、exit()が呼ばれた場合、
呼び出したところの局所オブジェクトは解体されないとあります。
で、質問なんですが、exitでプログラムを終了させた場合でも、
普通にmainからreturnで終了した場合でも、結局のところ、
プログラム終了->プロセスの終了で、このプロセスが使っていた
領域は開放されると思うのですが(間違ってます?)、だとすると、
exitで終了しようが、returnで終了しようが特に問題はない、と
いうことなんでしょうか。
ちとまだるっこしい文章でわかり難いかしら。
つまり
int main()
{
Hoge hoge;
exit(0);
}
このときhogeは解体されないですが、まあ問題なし?
同様にnewで領域を確保しておきながら、deleteしなかったとしても
プログラムが終了すれば領域は開放されるので問題なし?
プログラミング言語C++第3版によると、exit()が呼ばれた場合、
呼び出したところの局所オブジェクトは解体されないとあります。
で、質問なんですが、exitでプログラムを終了させた場合でも、
普通にmainからreturnで終了した場合でも、結局のところ、
プログラム終了->プロセスの終了で、このプロセスが使っていた
領域は開放されると思うのですが(間違ってます?)、だとすると、
exitで終了しようが、returnで終了しようが特に問題はない、と
いうことなんでしょうか。
ちとまだるっこしい文章でわかり難いかしら。
つまり
int main()
{
Hoge hoge;
exit(0);
}
このときhogeは解体されないですが、まあ問題なし?
同様にnewで領域を確保しておきながら、deleteしなかったとしても
プログラムが終了すれば領域は開放されるので問題なし?
▼ スレッド
- 7231: プログラミング言語C++第3版によると、exit()が呼ばれた場合、 呼び出したところの局所オブジェ Suzuki Satoshi
- └7232: メモリだけがリソースじゃないと思うんですが.... そこらへんOSがしっかりしていて、いかなる FUKUDA Fumiki
- ├7234: いま触ってるプログラムがいたるところでexit終了しているので、 たぶん、今の環境下だとメモ Suzuki Satoshi
- │└7236: テンポラリファイルを使っている場合で、デストラクタでファイルを消去したい、 なんて場合 K.Sasada
- │ └7239: ん。 もしかしたらあったりするかも。 他人のソースなんで気付かないところで見落としてるか Suzuki Satoshi
- └7235: なるほど Hoge::~Hoge()でやることがプロセスのリソースを解放するだけならexit()で もよいですが KOIE Hidetaka
- ├7238: なにげに読み進んでかるーく流すところでした。 やってみようかな。 Suzuki Satoshi
- └7240: fj.comp.lang.c の free on exit 論争をする気はないですが… プロセスが死んだときにファイルディス Tietew
- ├7241: そいつに一票! Suzuki Satoshi
- │└7242: おなじく...なんだけどぉ。 std::exitの瞬間に生きてるオブジェクト(global,static,automatic) のデスト FUKUDA Fumiki
- │ └7333: Ruby だと Kernel#exit は例外 SystemExit を投げまして,そいつを rescue したインタプリタが終了処理を Tietew
- │ └7334: ウマー 御意。 exitで緊急離脱すると残されたGUI-Fantomはあえなく失速急降下爆発炎上。 FUKUDA (epis FUKUDA Fumiki
- └7243: OSでカバーしきれないリソースを掴んでる場合もありますよね。 トランザクション処理とかの" Shimizukawa Takayuki