面试题答案
一键面试#include <iostream>
class MyClass {
public:
MyClass() : data(new int(0)) {}
~MyClass() {
delete data;
}
private:
int* data;
};
void process(const MyClass& obj) {
// 这里不改变obj的内容,只是处理可能的内存泄漏
// 由于obj是const引用,无法直接操作obj内部的data
// 所以我们假设这里有某种需要“处理”内存的情况,比如输出相关信息来表示处理
std::cout << "处理可能的内存泄漏(假设这里输出信息表示处理)" << std::endl;
}
函数调用前 obj
的内存状态
obj
中的 data
成员变量指向动态分配的内存,这块内存存储了一个 int
类型的数据。
函数调用后 obj
的内存状态
函数 process
不改变 obj
的内容,所以 obj
中的 data
仍然指向之前动态分配的那块内存,内存状态没有改变。当 obj
的生命周期结束时,其析构函数会释放 data
指向的内存,避免内存泄漏。