面试题答案
一键面试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
离开其作用域时,析构函数自动调用,从而确保动态分配的内存被正确释放。