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++ 中,裸指针应该只用于"非拥有"的观察。任何拥有资源的指针都应该被智能指针包装。