如何使用智能指针替换new
时间: 2024-01-05 09:02:09 浏览: 44
使用智能指针可以避免手动管理内存,从而降低内存泄漏、空悬指针等错误的风险。下面是使用智能指针替换 `new` 的示例代码:
```c++
#include <memory> // 包含智能指针头文件
int main() {
// 使用 std::make_shared 创建 shared_ptr 智能指针
std::shared_ptr<int> ptr = std::make_shared<int>(10);
// 使用 std::make_unique 创建 unique_ptr 智能指针
std::unique_ptr<int> ptr2 = std::make_unique<int>(20);
// 直接使用智能指针
std::shared_ptr<int> ptr3(new int(30));
// 使用 reset() 函数重置智能指针指向
ptr.reset(new int(40));
return 0;
}
```
在上面的示例中,我们使用了 `std::shared_ptr` 和 `std::unique_ptr` 两种智能指针来替代了 `new` 运算符。其中,`std::shared_ptr` 可以实现多个指针共享内存资源,而 `std::unique_ptr` 则只允许一个指针拥有内存资源。
另外,通过 `std::make_shared` 和 `std::make_unique` 函数创建的智能指针可以自动管理内存,无需手动释放。同时,我们还可以使用 `reset` 函数来释放智能指针所指向的内存,并重新指向一个新的内存资源。
总之,使用智能指针可以避免手动管理内存的麻烦和错误,提高代码的可读性和可维护性。