我是否需要在代码中包含std::unique_ptr使用,try/catch这应该是异常安全的?
std::unique_ptr将保存由::malloc(使用我的自定义删除器调用::free)创建的原始内存块.
如评论中所述,此答案仅与 C++14 相关。
尽管@keenyt了很好的答案,这是值得说,std::make_unique<T>可以抛出,即使的构造函数std::unique_ptr是noexcept。
实际上,上述语句是否抛出主要取决于所T涉及类型的构造函数。
如从示例cppreference.com为std::make_unique:
可能抛出 std::bad_alloc 或任何由 T 的构造函数抛出的异常。如果抛出异常,则此函数无效。
因此,答案的改进是:不,您不需要try/catch块,除非您正在使用std::make_unique并且您类型的构造函数T可以抛出。
| 归档时间: |
|
| 查看次数: |
1777 次 |
| 最近记录: |