C++ 智能指针(auto_ptr/unique_ptr/shared_ptr)
作者:野牛程序员:2024-01-03 18:40:21 C++阅读 2645
智能指针是 C++ 中用于管理动态分配的内存的工具。它们帮助确保资源在不再需要时被正确释放,从而减少内存泄漏的风险。
auto_ptr
是 C++98 中引入的第一个智能指针,但在 C++11 中已经被弃用。取而代之的是 unique_ptr
和 shared_ptr
。
unique_ptr
用于管理独占所有权的资源。一个 unique_ptr
拥有对其指向的对象的唯一所有权,当 unique_ptr
被销毁时,它会自动释放其所拥有的对象。
#include <memory> int main() { std::unique_ptr<int> myUniquePtr = std::make_unique<int>(42); // 使用myUniquePtr // ... // myUniquePtr将在作用域结束时自动释放内存 return 0; }
shared_ptr
允许多个智能指针共享对同一对象的所有权。它使用引用计数来追踪有多少个 shared_ptr
共享同一对象。
#include <memory> int main() { std::shared_ptr<int> firstSharedPtr = std::make_shared<int>(42); std::shared_ptr<int> secondSharedPtr = firstSharedPtr; // 共享所有权 // 使用firstSharedPtr和secondSharedPtr // ... // 当所有shared_ptr都离开作用域时,对象将被销毁 return 0; }
总体而言,使用智能指针可以提高代码的安全性和可维护性,因为它们自动处理内存管理,减少了手动管理内存的错误可能性。
野牛程序员教少儿编程与信息学奥赛-微信|电话:15892516892
