簡體   English   中英

std :: unique_ptr :: reset和構造函數異常

[英]std::unique_ptr::reset and constructor exceptions

如果初始化一個unique_ptr如下所示:

std::unique_ptr<Foo> i;
i.reset( new Foo() ); 

但是從Foo::Foo()拋出異常,問題是:分配的內存會發生什么? unique_ptr如何避免泄露? 這是在new運營商內部處理的事情嗎?

當范圍退出時,肯定會調用析構函數。 由於reset通話不會被調用,直到new Foo()返回時,似乎這必須辦理new ,由當異常離開構造函數釋放分配的內存。

這是怎么回事?

如果在Foo的構造函數中拋出異常,那么唯一指針的reset函數永遠不會在第一個位置執行。 因此,唯一指針保留其原始值。

如果對象構造拋出異常,則new表達式不會泄漏內存。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM