C++ 智能指针
在 C++ 中,动态内存管理一直是容易出错的地方(如内存泄漏、悬空指针)。为了更安全地管理内存,C++11 引入了智能指针(Smart Pointers)。
智能指针是包装了原始指针的类,它们负责自动管理内存的生命周期。主要的智能指针包含在 <memory> 头文件中。
std::unique_ptr
unique_ptr 是独占所有权的智能指针。同一时刻只能有一个 unique_ptr 指向某个对象。当 unique_ptr 被销毁时,它所指向的对象也会被自动删除。
unique_ptr<int> p1(new int(5));
// unique_ptr<int> p2 = p1; // 错误!不能复制
unique_ptr<int> p2 = move(p1); // 可以移动
std::shared_ptr
shared_ptr 是共享所有权的智能指针。多个 shared_ptr 可以指向同一个对象。内部使用引用计数,当最后一个指向对象的 shared_ptr 被销毁时,对象才会被删除。
实例
shared_ptr<Test> p1(new Test(100)); shared_ptr<Test> p2 = p1; // 引用计数增加
运行结果 / 调试信息
等待编译...
Graph loading...
0 / 0