std::make_shared unique的作用
时间: 2024-01-16 09:16:49 浏览: 145
std::make_shared和std::make_unique都是用于动态内存分配的函数模板,它们可以帮助我们更方便地创建智能指针对象。其中,std::make_shared用于创建std::shared_ptr对象,而std::make_unique用于创建std::unique_ptr对象。
std::make_shared的作用是创建一个std::shared_ptr对象,该对象指向一个动态分配的内存块,并且该内存块中存储了一个对象的值。与手动创建std::shared_ptr对象相比,使用std::make_shared可以更方便地进行内存管理,避免了手动分配和释放内存的麻烦。此外,使用std::make_shared还可以提高程序的性能,因为它可以减少内存分配和释放的次数。
std::make_unique的作用与std::make_shared类似,不同之处在于它创建的是std::unique_ptr对象。std::unique_ptr是一种独占式智能指针,它可以确保在任何时候只有一个指针可以访问该对象。与std::shared_ptr不同,std::unique_ptr不能共享所有权,因此它更适用于那些不需要共享所有权的情况。
下面是一个使用std::make_shared创建std::shared_ptr对象的例子:
```c++
#include <memory>
#include <iostream>
int main() {
auto ptr = std::make_shared<int>(42);
std::cout << *ptr << std::endl; // 输出:42
return 0;
}
```
下面是一个使用std::make_unique创建std::unique_ptr对象的例子:
```c++
#include <memory>
#include <iostream>
int main() {
auto ptr = std::make_unique<int>(42);
std::cout << *ptr << std::endl; // 输出:42
return 0;
}
```
阅读全文