C++ 开发与语法
RAII:让资源的生命周期跟着对象走
通过栈对象和智能指针处理文件、锁与异常。
原理
打开文件后紧接着抛出异常,是检验资源管理代码的好方法。将文件或锁交给局部对象,离开作用域时析构函数就会清理资源,提前返回也走同一条路径。
开发中的做法
独占所有权用 unique_ptr,调用方只需借用对象时使用引用或明确不拥有的指针。只有确实存在多个独立所有者时才引入 shared_ptr。
验证与追问
代码审查时跟踪创建、转移和释放三处。为提前返回和异常各做一次测试,并确认析构不会抛出异常。
代码片段
std::lock_guard<std::mutex> lock(mu);
update_shared_state();