手动 new/delete 的时代早该结束了。现代 C++ 提供了一套表达所有权的新词汇。

所有权即文档

unique_ptr 表达独占,shared_ptr 表达共享。函数签名里写清楚所有权语义,调用者不需要读注释就知道该不该释放。

共享的代价

shared_ptr 的引用计数是原子操作,拷贝有成本;更麻烦的是循环引用导致内存泄漏,需要弱引用打断环。

实践建议

默认用 unique_ptr,确有共享需求再换 shared_ptr;观察者、缓存这类「知道但不拥有」的关系一律 weak_ptr。