C++ 智能指针

智能指针是C++中用于自动管理动态分配内存的模板类,它们帮助防止内存泄漏,并在适当的时候自动释放内存。C++11标准引入了以下几种主要的智能指针:

1. std::unique_ptr
独占所有权:同一时间只能有一个unique_ptr指向特定对象
轻量高效:几乎无额外开销
不可复制,但可以通过std::move转移所有权

2. std::shared_ptr
共享所有权:多个shared_ptr可以指向同一对象
引用计数:内部维护引用计数器,当计数为0时释放内存
可复制,适合共享访问的场景

3. std::weak_ptr
弱引用:不增加引用计数,不控制对象生命周期
用于解决shared_ptr的循环引用问题
必须转换为shared_ptr才能访问对象

4.最佳实践
(1)优先使用std::make_unique和std::make_shared而非直接new:
更安全(避免内存泄漏)
更高效(特别是对于shared_ptr)

(2)选择原则:
需要独占所有权时用unique_ptr
需要共享所有权时用shared_ptr
需要观察但不拥有时用weak_ptr

(3)避免裸指针与智能指针混用
全部评论

相关推荐

评论
4
4
分享

创作者周榜

更多
牛客网
牛客企业服务