这样使用 shared_ptr 有错吗?
时间: 2023-08-28 18:12:40 浏览: 76
C++11 std::shared_ptr总结与使用示例代码详解
不,使用 shared_ptr 是一种常见且有效的资源管理方式。shared_ptr 是 C++ 中智能指针的一种,它可以自动计数对象的引用次数,并在引用次数为零时自动释放对象所占用的内存。这样可以避免内存泄漏和悬挂指针等问题。
使用 shared_ptr 的方式如下:
```cpp
#include <memory>
int main() {
std::shared_ptr<int> shared(new int(10));
// 使用 shared_ptr 对象
int value = *shared;
// 其他操作...
return 0;
}
```
在上述示例中,我们创建了一个 shared_ptr 对象,将其初始化为指向一个动态分配的整数对象。使用 *shared 可以访问共享的整数值。当 shared_ptr 对象超出作用域时,引用计数会递减,当引用计数为零时,会自动释放所指的整数对象。
需要注意的是,在多线程环境中使用 shared_ptr 时需要注意线程安全性。另外,避免形成循环引用也是使用 shared_ptr 的一个要点,否则可能导致资源无法释放。
阅读全文