voi*_*ter 28 boost memory-management smart-pointers wrapper c++11
我经常需要在C++中处理动态分配的数组,因此依赖于Boost for scoped_array,shared_array等.在阅读了Stroustrup的C++ 11 FAQ和C++ 11 Reference Wiki之后,我无法找到C++ 11标准提供的这些动态数组包装器的合适替代品.有什么东西我忽略了,还是我必须继续依赖Boost?
非常感谢您的帮助!
Inb*_*ong 49
有一个专业化unique_ptr
,像unique_ptr<T[]>
.
#include <iostream>
#include <memory>
struct test
{
~test() { std::cout << "test::dtor" << std::endl; }
};
int main()
{
std::unique_ptr<test[]> array(new test[3]);
}
Run Code Online (Sandbox Code Playgroud)
当您运行它时,您将收到此消息.
test::dtor
test::dtor
test::dtor
Run Code Online (Sandbox Code Playgroud)
如果你想使用shared_ptr
,你应该使用std::default_delete<T[]>
删除器,因为它没有像shared_ptr<t[]>
.
std::shared_ptr<test> array(new test[3], std::default_delete<test[]>());
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
10900 次 |
最近记录: |