PHIL / NOTES
← 返回笔记目录
C++ 开发与语法

RAII:让资源的生命周期跟着对象走

通过栈对象和智能指针处理文件、锁与异常。

原理

打开文件后紧接着抛出异常,是检验资源管理代码的好方法。将文件或锁交给局部对象,离开作用域时析构函数就会清理资源,提前返回也走同一条路径。

开发中的做法

独占所有权用 unique_ptr,调用方只需借用对象时使用引用或明确不拥有的指针。只有确实存在多个独立所有者时才引入 shared_ptr。

验证与追问

代码审查时跟踪创建、转移和释放三处。为提前返回和异常各做一次测试,并确认析构不会抛出异常。

代码片段

std::lock_guard<std::mutex> lock(mu);
update_shared_state();