在C++中,智能指针是一种管理动态分配内存的工具,通过自动化内存管理来避免内存泄漏。主要有std::unique_ptr
和std::shared_ptr
两种。
std::unique_ptr
:#include <iostream>
#include <memory>
class MyClass {
public:
MyClass() {
std::cout << "对象已创建" << std::endl;
}
~MyClass() {
std::cout << "对象已销毁" << std::endl;
}
};
int main() {
std::unique_ptr<MyClass> uniquePtr(new MyClass);
// 不需要手动释放内存,当uniquePtr超出作用域时,对象自动销毁
return 0;
}
std::shared_ptr
:#include <iostream>
#include <memory>
class MyClass {
public:
MyClass() {
std::cout << "对象已创建" << std::endl;
}
~MyClass() {
std::cout << "对象已销毁" << std::endl;
}
};
int main() {
std::shared_ptr<MyClass> sharedPtr1 = std::make_shared<MyClass>();
std::shared_ptr<MyClass> sharedPtr2 = sharedPtr1; // 共享所有权
// 当sharedPtr1和sharedPtr2都超出作用域时,对象才会销毁
return 0;
}
std::shared_ptr
允许多个指针共享同一个资源,自动处理引用计数。使用智能指针可提高代码的可维护性和安全性,减少内存管理的复杂性。