-2
unique_ptr<X> f()
{
    unique_ptr<X> p(new X);     // or {new X} but not = new X
    // do something - maybe throw an exception
    return p;   // the ownership is transferred out of f()
}

例外がスローされたとき、なぜオブジェクト X の存在を気にかけ、それが占有するメモリを気にするのでしょうか?

プロセスは例外処理の直後に終了し、メモリが解放されます。なぜこれを気にするのでしょうか?

4

2 に答える 2

6

プロセスは、例外の処理後すぐに終了します

誰が言ったのですか?

例外が存在する場合に実行するのが終了だけである場合は、そうです、無視できます。ただし、キャッチする必要のある例外はたくさんあります。例外的な状況に対してコードを比較的防弾にすることは悪いことではありません。

そして、例外を無視するのではなく、実際にキャッチしようと決心したら、RAIIが必要になります。

于 2012-08-08T02:02:24.743 に答える
6

ほとんどのアプリケーションでは、プロセスがすぐに終了せず、メモリ リークが発生したくないためです。なぜメモリリークを気にする必要があるのか​​ と尋ねるかもしれません。

于 2012-08-08T01:36:39.163 に答える