我在以下功能中遇到内存泄漏情况。
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);
有人能指出我发生内存泄漏的地方以及如何克服它。
修改 的
我打电话给免费(root_buf);后来。忘了提那个部分。我相信这与我创建指针并返回它的事实有关。也许引用被调用函数函数中的另一个指针捕获。
答案 0 :(得分:1)
使用malloc
分配的内存永远不会再次释放。
如果您从通话网站执行此操作:
char* root_buf = readfromfile(fname,pageno);
// do stuff
free(root_buf);
它应该解决泄漏。
答案 1 :(得分:0)
您在这里使用malloc。
char *buff = (char*) malloc(sizeof(char) * pagesize);
使用后需要释放内存。
完成root_buf并且不再需要它之后:
free (root_buf);