RAII
维基百科,自由的 encyclopedia
RAII,全称资源获取即初始化(英语:Resource Acquisition Is Initialization),它是在一些面向对象语言中的一种惯用法(英语:Programming idiom)。RAII源于C++,在Java,C#,D,Ada,Vala和Rust中也有应用。1984-1989年期间,比雅尼·斯特劳斯特鲁普和安德鲁·柯尼希(英语:Andrew Koenig (programmer))在设计C++异常时,为解决资源管理(英语:Resource management (computing))时的异常安全(英语:Exception safety)性而使用了该用法[1],后来比雅尼·斯特劳斯特鲁普将其称为RAII[2]。
RAII要求,资源的有效期与持有资源的对象的生命期(英语:Object lifetime)严格绑定,即由对象的构造函数完成资源的分配(英语:Resource allocation (computer))(获取),同时由析构函数完成资源的释放。在这种要求下,只要对象能正确地析构,就不会出现资源泄漏问题。