关于内存释放的一个问题!
刚分析了一个大师用C++对C库中目录操作函数的封装。
有一个地方,有一点疑问。
就是read成员函数的定义中有一句:
dirent* r = readdir(dp);
调用readdir时, 内核会为r分配一块内存;那么这块内存
应该由谁来释放?为什么这里没有释放r所指向内存的操作?
这不是存在内存泄露吗?
其实read成员函数的参数是引用类型, 就是为了类的用户避免面对
讨厌的内存问题,但read函数内部确还是同样存在内存问题。
请大家一起来分析!
class Dir
{
public:
Dir(const char*);
int read(dirent&);
....
private:
DIR* dp;
};
Dir::Dir(const char* file): dp(opendir(file)){}
int Dir::read(dirent& d)
{
if (dp)
{
dirent* r = readdir(dp);
if (r)
{
d = *r;
return 1;
}
}
return 0;
}