MST

星途 面试题库

面试题:C++中RAII机制的原理及简单实现

请阐述C++中RAII(Resource Acquisition Is Initialization)机制的基本原理。并通过一个简单的自定义类,展示如何利用RAII来管理动态分配的内存资源,例如在类的构造函数中分配内存,在析构函数中释放内存。
34.6万 热度难度
编程语言C++

知识考点

AI 面试

面试题答案

一键面试

RAII机制基本原理

RAII(Resource Acquisition Is Initialization)即资源获取即初始化,其核心思想是将资源的生命周期与对象的生命周期绑定。当对象创建时获取资源,在对象销毁时释放资源。这样可以利用C++的自动对象管理机制(栈上对象在离开作用域时自动销毁),确保资源的正确释放,避免资源泄漏。

利用RAII管理动态分配内存资源示例代码

#include <iostream>

class MemoryManager {
public:
    MemoryManager(size_t size) : data(new int[size]), size(size) {
        std::cout << "Memory allocated." << std::endl;
    }

    ~MemoryManager() {
        delete[] data;
        std::cout << "Memory released." << std::endl;
    }

private:
    int* data;
    size_t size;
};

可以通过如下方式使用这个类:

int main() {
    {
        MemoryManager mm(10);
        // 在mm的作用域内,内存已分配,当离开这个作用域,mm析构,内存释放
    }
    return 0;
}

在上述代码中,MemoryManager类在构造函数中使用new分配内存,在析构函数中使用delete[]释放内存。当MemoryManager对象mm离开其作用域时,析构函数自动调用,从而确保动态分配的内存被正确释放。