c++++中智能指针的核心是shared_ptr和unique_ptr。1.shared_ptr适用于共享所有权场景,采用引用计数机制,适合多处共享资源的情况,但需注意避免循环引用,可通过weak_ptr解决;2.unique_ptr适用于独占所有权场景,不可复制只能移动,适合生命周期明确、无需共享的资源;3.选择策略上,优先用unique_ptr,若需多所有者则用shared_ptr;4.使用时应注意不要将同一原始指针交由多个智能指针管理,慎用栈对象绑定,数组资源需特殊处理,非内存资源可通过自定义删除器支持。

在C++中,智能指针是现代内存管理的核心工具。它们通过自动释放资源来避免内存泄漏和悬空指针等问题。其中,
shared_ptr
unique_ptr

shared_ptr
shared_ptr
shared_ptr

shared_ptr
weak_ptr
std::shared_ptr<int> p1 = std::make_shared<int>(42); std::shared_ptr<int> p2 = p1; // 引用计数加1
std::make_shared
shared_ptr
unique_ptr
unique_ptr
立即学习“C++免费学习笔记(深入)”;
std::unique_ptr<int> uptr = std::make_unique<int>(100); // 不能复制:auto uptr2 = uptr; // 编译错误 auto uptr2 = std::move(uptr); // 合法,uptr变为空
unique_ptr
如何决定使用哪种智能指针?可以遵循以下原则:

unique_ptr
shared_ptr
unique_ptr
std::move()
举个例子:
unique_ptr
shared_ptr
有些细节容易被忽略,但影响很大:
unique_ptr
unique_ptr<T[]>
shared_ptr
std::unique_ptr<int[]> arr(new int[10]); // 正确 arr[0] = 1;
另外,对于非内存资源(如文件句柄、socket等),可以通过自定义删除器让智能指针管理这些资源,扩展性强。
基本上就这些。掌握好
shared_ptr
unique_ptr
以上就是C++智能指针如何管理内存 shared_ptr与unique_ptr实践的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号