5

C ++ 11では、常に/の代わりにunique_ptrまたはを使用する必要がありますか?パフォーマンスはどうですか、スマートポインターははるかに遅いですか?shared_ptrnewdelete

4

2 に答える 2

7

unique_ptr生のポインタを使用する場合と比較して、実行時のオーバーヘッドはまったくありません(想定されていません)。shared_ptrある程度のメモリと時間のオーバーヘッドがあります(実装によって異なります)。ここでの実際のオーバーヘッドは、のように動作するものが実際に必要な場合は簡単にゼロになりますshared_ptr(つまり、他の実装では、より高速またはよりメモリ効率が高くなるとは思われません)。

これは、コードでnew / deleteを使用しないということではありませんが、常に実行することではありません。

于 2013-03-15T12:49:35.083 に答える
2

生のメモリを処理するためにshared_ptrを使用したいのは-

1)それはRAIIカウントされた体のイディオムに従います。

2)オブジェクトは確実に破棄され、例外が発生してもメモリは解放されます。

3)いつ新規/削除するかを決めるという選択はもうありません。

于 2013-03-15T13:02:47.883 に答える