make_shared和new
时间: 2023-08-03 08:13:53 浏览: 123
c++智能指针介绍的PPT
`make_shared` 和 `new` 都是 C++ 中用于动态分配内存的函数。
`new` 用于分配单个对象的内存,并返回指向该对象的指针。使用 `new` 分配的内存需要手动释放,否则可能会导致内存泄漏。
例如,下面的代码使用 `new` 分配一个 `int` 类型的对象,并将其赋值为 `42`:
```
int* myInt = new int(42);
```
`make_shared` 用于创建一个 `std::shared_ptr` 对象,该对象可以自动地管理动态分配的内存。使用 `make_shared` 分配的内存会在引用计数变为零时自动释放。
例如,下面的代码使用 `make_shared` 分配一个 `int` 类型的对象,并将其赋值为 `42`:
```
std::shared_ptr<int> myInt = std::make_shared<int>(42);
```
总体而言,使用 `make_shared` 更加安全、高效,因为它可以避免手动释放内存和多次分配内存的开销。但是,`new` 仍然有其用处,例如在分配数组时。
阅读全文