场景
std::unique_ptr 是C++11提供的新的智能指针,特点有:
- 非线程安全的
- auto_ptr的替代品,因为它不提供copy Constructor和 Copy Assignable,也就是指针不能复制.
- 只有一个智能指针对包含的实例对象有所有权,意思是只有一个智能指针在它生命周期结束后调用析构函数.
- 它默认指针两种销毁对象的方式,一种是delete,另一种是delete[],比auto_ptr多了数组方式的delete[].
- 它没有引用计数和线程安全的方法,所以它的性能其实比shared_ptr要高,但是不适用无序的多线程环境.
最好只在单线程环境使用.
- 也适用于自定义的deleter(也可以使用lambda),即可以代理C的free,CloseHandle等等.
auto my_free = [](void* data){ std::cout << "hello" <<