다음 함수에서 메모리 누수가 있습니다. 포인터를 반환 할 때 메모리 누수가 발생했습니다.
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)를 호출 할; 후에. 그 부분을 언급하는 것을 잊었습니다. 이것은 포인터를 생성하고 리턴한다는 사실과 관련이 있다고 생각합니다. 어쩌면 참조가 호출자 함수의 다른 포인터에 걸릴 수도 있습니다.
'무료'로 전화하지 마십시오. 그게 누출 된 이유야. – CodeTower
당신은 또한 filedescriptor 누수가있는 것 같습니다. (또는 전역 변수는 무엇입니까?) – wildplasser
@wildplasser fd는 벡터에 여러 파일 설명자를 저장하는 데 도움이됩니다. 정수 변수입니다. – AdityaTS