在 Linux C++ 开发中,使用智能指针可以有效地管理内存资源,避免内存泄漏
#include <iostream>
#include <memory>
class MyClass {
public:
MyClass() { std::cout << "MyClass 构造函数被调用" << std::endl; }
~MyClass() { std::cout << "MyClass 析构函数被调用" << std::endl; }
};
std::unique_ptr
管理对象:int main() {
// 创建一个 unique_ptr,指向 MyClass 的实例
std::unique_ptr<MyClass> ptr = std::make_unique<MyClass>();
// 使用智能指针
// ...
// 当 ptr 离开作用域时,MyClass 的实例会被自动删除
return 0;
}
std::shared_ptr
管理对象:int main() {
// 创建一个 shared_ptr,指向 MyClass 的实例
std::shared_ptr<MyClass> ptr = std::make_shared<MyClass>();
// 共享所有权
{
std::shared_ptr<MyClass> ptr2 = ptr;
// ...
} // 当 ptr2 离开作用域时,MyClass 的实例不会被删除,因为 ptr 仍然指向它
// 当 ptr 离开作用域时,MyClass 的实例会被删除(因为所有权计数变为 0)
return 0;
}
注意:在使用 std::shared_ptr
时,确保正确管理对象的生命周期,以避免循环引用导致的内存泄漏。在这种情况下,可以考虑使用 std::weak_ptr
来打破循环引用。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。