C++ 里有一个 RAII 机制(资源获取就是初始化),是 C++ 用来管理资源、避免内存泄漏的方法。它保证在任何情况下,使用对象时先构造对象,最后析构对象。也就是在使用一个对象的时候,在其构造时获取资源,在对象生命期控制对资源的访问使之始终保持有效,最后在对象析构的时候释放资源。
函数在执行完毕的时候会自动清理栈空间内的内容,自动的去调用资源管理类的析构函数,RAII 就是结合了栈和析构函数来对所有资源进行管理,所以 C++ 就不需要像 Java 那样的垃圾回收机制,也能有效对资源进行管理。
void foo() {
bar *pt = new bar();
// ...