您好,登录后才能下订单哦!
密码登录
登录注册
点击 登录注册 即表示同意《亿速云用户服务条款》
在 Linux 下,C++ 的智能指针是一种用于自动管理内存的工具,它可以避免内存泄漏和悬挂指针等问题
示例:
#include <iostream>
#include <memory>
class MyClass {
public:
MyClass() { std::cout << "MyClass 构造函数" << std::endl; }
~MyClass() { std::cout << "MyClass 析构函数" << std::endl; }
};
int main() {
std::unique_ptr<MyClass> ptr(new MyClass());
// 当 ptr 超出作用域时,MyClass 对象将自动被删除
return 0;
}
示例:
#include <iostream>
#include <memory>
class MyClass {
public:
MyClass() { std::cout << "MyClass 构造函数" << std::endl; }
~MyClass() { std::cout << "MyClass 析构函数" << std::endl; }
};
int main() {
std::shared_ptr<MyClass> ptr1(new MyClass());
{
std::shared_ptr<MyClass> ptr2 = ptr1; // ptr1 和 ptr2 现在共享 MyClass 对象的所有权
} // 当 ptr2 超出作用域时,MyClass 对象不会被删除,因为 ptr1 仍然指向它
return 0;
}
示例:
#include <iostream>
#include <memory>
class MyClass {
public:
MyClass() { std::cout << "MyClass 构造函数" << std::endl; }
~MyClass() { std::cout << "MyClass 析构函数" << std::endl; }
};
int main() {
std::shared_ptr<MyClass> ptr1(new MyClass());
std::weak_ptr<MyClass> wk_ptr = ptr1; // 创建一个弱引用
if (auto shared_ptr = wk_ptr.lock()) { // 将弱引用升级为共享引用
std::cout << "成功获取到共享指针" << std::endl;
} else {
std::cout << "无法获取到共享指针" << std::endl;
}
return 0;
}
在 Linux 下使用 C++ 智能指针,可以确保内存管理的安全性,减少内存泄漏和悬挂指针等问题。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。