P-G*_*-Gn 5 c++ constructor unique-ptr
我正在查看CppCon 2014 的“Hourglass API”演讲的配套代码,该代码主要通过使用具有 C 签名的函数包装类的成员函数来向 C++ 库提供 C API。
除此之外,我对这个物体的构造方式很感兴趣。hairpoll_construct
在构造新对象的函数中hairpoll
,指针通过以下方式获得
std::make_unique<hairpoll>(person).release()
Run Code Online (Sandbox Code Playgroud)
它实际上是在处理异常的函数中调用的。一种更简单的方法是诉诸简单的方法
new hairpoll(person)
Run Code Online (Sandbox Code Playgroud)
在什么情况下前者更可取?这是否与这个特殊 API 的工作方式有关,或者比这更通用?
如果构造函数抛出异常,则new
表达式 \xc2\xb9 在传递异常之前自动释放内存。
作者可能认为需要使用临时unique_ptr
来实现这一点。
我不知道有什么优势。
\n\n\n \xc2\xb9 除非该类定义了分配器函数,否则operator new
,没有相应的解除分配器函数,operator delete
。Microsoft 的 MFC 类库中的调试功能曾经属于这种情况。内存泄漏,但仅限于调试版本。\n
归档时间: |
|
查看次数: |
559 次 |
最近记录: |