std::unique_ptr通过独占所有权机制确保资源安全,禁止拷贝但支持移动语义,能自动释放资源,防止内存泄漏,适用于函数间传递所有权,提升代码安全与清晰度。

在C++中,std::unique_ptr 是一种智能指针,用于实现对动态分配对象的独占所有权。它确保同一时间只有一个
unique_ptr
独占所有权意味着:
unique_ptr
unique_ptr
unique_ptr
这种设计避免了资源重复释放或悬空指针的问题。
创建一个
unique_ptr
std::make_unique
立即学习“C++免费学习笔记(深入)”;
#include <memory>
#include <iostream>
struct MyClass {
int value;
MyClass(int v) : value(v) { std::cout << "构造: " << value << "\n"; }
~MyClass() { std::cout << "析构: " << value << "\n"; }
};
int main() {
auto ptr = std::make_unique<MyClass>(42);
// 自动调用析构函数,释放资源
return 0;
}
输出:
防封域名方法千千种,我们只做最简单且有用的这一种。微信域名防封是指通过技术手段来实现预付措施,一切说自己完全可以防封的那都是不可能的,一切说什么免死域名不会死的那也是吹牛逼的。我们正在做的是让我们的推广域名寿命更长一点,成本更低一点,效果更好一点。本源码采用 ASP+ACCESS 搭建,由于要用到二级域名,所以需要使用独享云虚机或者云服务器,不支持虚拟主机使用,不支持本地测试。目前这是免费测试版,
0
unique_ptr
unique_ptr
auto ptr1 = std::make_unique<MyClass>(100); // auto ptr2 = ptr1; // 错误:禁止拷贝 auto ptr2 = std::move(ptr1); // 正确:移动所有权 // 此时 ptr1 为空,ptr2 拥有对象
移动后,原指针变为
nullptr
在函数间传递所有权时,
unique_ptr
std::unique_ptr<MyClass> createObject() {
return std::make_unique<MyClass>(200);
}
void useObject(std::unique_ptr<MyClass> ptr) {
// 接收所有权,函数结束时自动释放
std::cout << "使用对象: " << ptr->value << "\n";
}
int main() {
auto ptr = createObject(); // 接收返回的所有权
useObject(std::move(ptr)); // 转移所有权给函数
// 此时 ptr 已为空
return 0;
}
delete
基本上就这些。使用
unique_ptr
以上就是C++ unique_ptr使用 独占所有权实现的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号