cpp programming

smart-pointers

2024年7月25日

← Home

本篇文章由 claude code 生成,用于检测 post-list.tsx 组件渲染效果

一、为什么需要智能指针

手动管理内存是 C++ 最常见的错误来源。

C++11 引入的智能指针被广泛认为是现代 C++ 最重要的特性之一。

unique_ptr、shared_ptr、weak_ptr —— 它们各自有不同的用途和权衡。

二、unique_ptr:默认选择

除非你有明确的共享需求,unique_ptr 应该是你的默认选择。

unique_ptr 的运行时开销几乎为零。它的大小和一个裸指针相同。

它清晰地表达了所有权:一个对象只有一个所有者。当所有者被销毁,对象也被销毁。

三、shared_ptr:谨慎使用

共享所有权是有代价的。引用计数的原子操作不是免费的。

过度使用 shared_ptr 是新手常犯的错误。如果一个对象的生命周期是明确的,使用 unique_ptr。

四、避免裸指针

在现代 C++ 中,裸指针应该只用于"非拥有"的观察。任何拥有资源的指针都应该被智能指针包装。