-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

因为在大多数应用程序中,进程不会立即终止,并且您不想泄漏内存。你可能会问为什么你应该关心内存泄漏。

于 2012-08-08T01:36:39.163 回答
6

处理异常后,进程将很快终止

谁说的?

如果您在出现异常时所做的只是终止,那么是的,您可以忽略它。但是,您应该捕获许多例外情况。使您的代码在特殊情况下相对防弹并不是一件坏事。

一旦您决定真正开始尝试捕获异常而不是忽略它们,您就需要 RAII。

于 2012-08-08T02:02:24.743 回答