合作机构:阿里云 / 腾讯云 / 亚马逊云 / DreamHost / NameSilo / INWX / GODADDY / 百度统计
在C++标准模板库(STL)中有三种智能指针:shared_ptr、unique_ptr和weak_ptr。这三者在现代C++编程中扮演着至关重要的角色,它们的设计旨在管理动态内存,并提供更安全、更方便的内存管理方式。
shared_ptr是一种具有引用计数功能的智能指针。当多个shared_ptr指向同一块内存时,它们会维护一个引用计数,确保在没有任何指针指向该内存时自动释放。下面是一个简单的示例:
#include <memory>
#include <iostream>
int main() {
std::shared_ptr<int> shared1 = std::make_shared<int>(42);
std::shared_ptr<int> shared2 = shared1; // 共享所有权
std::cout << "shared1: " << *shared1 << std::endl; // 输出:42
std::cout << "shared2: " << *shared2 << std::endl; // 输出:42
// 引用计数减一,但不会释放内存,因为仍然有一个shared_ptr指向它
shared1.reset();
std::cout << "shared2: " << *shared2 << std::endl; // 输出:42
// 当最后一个shared_ptr离开作用域时,引用计数为零,内存被释放
return 0;
}
TOP