make_shared和make_unique
时间: 2023-09-08 19:09:18 浏览: 88
make_shared和make_unique都是C++标准库中的函数模板,用于创建智能指针对象。它们的作用是方便地创建一个动态分配的对象,并将其管理在一个智能指针中。
make_shared用于创建一个shared_ptr对象,它采用引用计数的方式管理所指向的对象。当有一个新的shared_ptr
相关问题
make_unique与make_shared
`make_unique`和`make_shared`都是C++11中引入的模板函数,用于创建动态分配的智能指针对象。它们的区别在于:
`make_unique`用于创建一个`unique_ptr`智能指针对象,该对象独占所指向的对象,不能共享。`make_unique`函数使用起来比直接用`new`操作符分配内存然后传递给`unique_ptr`更加安全,能够避免内存泄漏等问题。
`make_shared`用于创建一个`shared_ptr`智能指针对象,该对象可被多个指针共享。`make_shared`函数会在内存中分配一个控制块,同时在控制块中存储指向所分配对象的指针,以及引用计数等信息。因此,使用`make_shared`函数创建智能指针对象可以减少内存分配次数,提高程序性能。
需要注意的是,`make_shared`需要将所分配的对象直接传递给函数,而不能通过构造函数的方式传递参数。如果需要传递参数,可以使用`std::shared_ptr`的构造函数来创建智能指针对象。
make_unique/make_shared
make_unique和make_shared都是C++11中添加的函数模板,用于创建智能指针对象。
make_unique用于创建unique_ptr对象,这种智能指针只能有一个指针指向对象,不允许共享所有权。
make_shared用于创建shared_ptr对象,这种智能指针允许多个指针指向同一个对象,并且使用引用计数来跟踪指针的数量,当所有指针都释放后,对象也就被释放了。
总的来说,make_unique适用于需要独占所有权的场景,而make_shared适用于需要共享所有权的场景。
阅读全文