std::make_unique和std::make_shared通过原子操作确保异常安全,避免内存泄漏,并提升代码简洁性与性能。

在C++的现代内存管理实践中,
std::make_unique
std::make_shared
std::unique_ptr
std::shared_ptr
new
解决方案 在我看来,使用
make_unique
make_shared
想象一下,如果你直接使用
new
std::shared_ptr<MyObject> ptr(new MyObject(arg1, arg2));
some_function(std::shared_ptr<MyObject>(new MyObject()), another_function())
new MyObject()
another_function()
std::shared_ptr
another_function()
new MyObject()
make_unique
make_shared
对于
std::unique_ptr
std::make_unique
#include <memory>
#include <iostream>
class MyUniqueObject {
public:
MyUniqueObject() { std::cout << "MyUniqueObject constructed\n"; }
~MyUniqueObject() { std::cout << "MyUniqueObject destroyed\n"; }
void greet() { std::cout << "Hello from unique object!\n"; }
};
// 使用 make_unique
std::unique_ptr<MyUniqueObject> u_ptr = std::make_unique<MyUniqueObject>();
// u_ptr->greet(); // 可以正常使用make_unique
return unique_ptr<T>(new T(args...));
如果您是新用户,请直接将本程序的所有文件上传在任一文件夹下,Rewrite 目录下放置了伪静态规则和筛选器,可将规则添加进IIS,即可正常使用,不用进行任何设置;(可修改图片等)默认的管理员用户名、密码和验证码都是:yeesen系统默认关闭,请上传后登陆后台点击“核心管理”里操作如下:进入“配置管理”中的&ld
0
立即学习“C++免费学习笔记(深入)”;
而
std::shared_ptr
std::make_shared
#include <memory>
#include <iostream>
class MySharedObject {
public:
MySharedObject(int id) : id_(id) { std::cout << "MySharedObject " << id_ << " constructed\n"; }
~MySharedObject() { std::cout << "MySharedObject " << id_ << " destroyed\n"; }
void show_id() { std::cout << "Shared object ID: " << id_ << "\n"; }
private:
int id_;
};
// 使用 make_shared
std::shared_ptr<MySharedObject> s_ptr = std::make_shared<MySharedObject>(123);
// s_ptr->show_id(); // 可以正常使用
// 共享所有权
std::shared_ptr<MySharedObject> s_ptr2 = s_ptr;make_shared
new MySharedObject()
以上就是C++如何在内存管理中使用make_unique和make_shared的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号