Skip to content

Latest commit

 

History

History
19 lines (13 loc) · 1.42 KB

什么是RAII原则,他在STL是怎么应用的?.md

File metadata and controls

19 lines (13 loc) · 1.42 KB

RAII原则的核心思想:

  • 在构造函数中获取资源。
  • 在析构函数中释放资源。
  • 不直接操作资源,而是通过管理资源的对象来使用资源。

这样做有几个好处:

  1. 安全性:避免资源泄露。由于资源的释放是自动的,因此即使在异常发生时,对象的析构函数也会被调用,资源也相应地会被释放。
  2. 简洁性:代码通常更加简洁,因为资源的管理是自动的,不需要程序员显式编写资源释放代码。
  3. 异常安全:RAII可以帮助提供强异常安全保障,因为资源释放不依赖于程序路径。

RAII在STL中的应用:

在STL中,RAII广泛应用于各种容器和其他组件中。例如:

  • 智能指针std::unique_ptrstd::shared_ptr 是智能指针类,它们对动态分配的内存进行管理。当智能指针的实例离开作用域时,其析构函数会自动释放其所管理的内存。
  • 容器类:如 std::vectorstd::stringstd::map 等,都负责自己内部数据的内存管理。当一个容器对象被销毁时,它的析构函数会释放所有占用的内存,并适当地销毁其元素。
  • 锁管理类:如 std::lock_guardstd::unique_lock,它们在构造时获取锁,在析构时释放锁,从而确保在持有锁的代码块执行完毕后,无论是正常退出还是因异常退出,锁都会被释放。