0
我在以下函数中面临内存泄漏情况。返回指针上的内存泄漏
char * readdatafromfile(unsigned pageNumber) {
char *buff = (char*) malloc(sizeof(char) * pagesize);
lseek(fd, pagesize * (pageNumber), SEEK_SET);
read(fd, buff, pagesize);
return buff;
}
//Read from file
char * readfromfile(char *fname, int pageno) {
char *buff = NULL;
fd = searchinvector(fname);
if (fd > 0)
buff = readdatafromfile(pageno);
else
printf("\nINDEX is not opened\n");
return buff;
}
我想在那里发生内存泄漏和如何克服它调用的函数通过以下方式
char* root_buf = readfromfile(fname,pageno);
可有人点我。
编辑
我做调用free(root_buf);后来。忘了提及那部分。我相信这与我创建一个指针并返回它的事实有关。也许参考被捕获到调用函数中的另一个指针。
你永远不会叫'免费'。这就是为什么你有泄漏。 – CodeTower
看来你也有一个filedescriptor泄漏。 (或者是一个全局变量?) – wildplasser
@wildplasser fd只是帮助我将多个文件描述符存储在一个向量中。它是一个整数变量。 – AdityaTS