智能指针是C++中用于管理动态内存的一种机制,它能够帮助我们自动管理内存,避免内存泄漏和空悬指针问题。C++11引入了标准库中的智能指针,包括std::unique_ptr、std::shared_ptr和std::weak_ptr。
#include <memory>
int main() {
std::unique_ptr<int> ptr(new int(5));
std::cout << *ptr << std::endl;
return 0;
}
#include <memory>
int main() {
std::shared_ptr<int> ptr1(new int(5));
std::shared_ptr<int> ptr2 = ptr1;
std::cout << *ptr1 << " " << *ptr2 << std::endl;
return 0;
}
#include <memory>
int main() {
std::shared_ptr<int> ptr(new int(5));
std::weak_ptr<int> weakPtr = ptr;
if(auto sharedPtr = weakPtr.lock()) {
std::cout << *sharedPtr << std::endl;
} else {
std::cout << "shared_ptr is expired" << std::endl;
}
return 0;
}
总结: 使用智能指针可以简化内存管理,减少内存泄漏和空悬指针问题。在编写C++代码时,建议尽量使用智能指针来管理动态内存,尤其是在涉及到跨函数调用和多线程的情况下。