我正在附加一个片段。我省略了很多。如果需要,我将附加更多:
unsigned char *datap = malloc (MAXSIZE);
unsigned char *datapor = datap;
//Here Im cutting a lot
while( (direntp = readdir(dirp)) != NULL)
{
datap = datapor;
}
//this line gives me exception
free(datap);
海湾合作委员会显示:
*** glibc detected *** /home/xf/xf/unzipper: free(): invalid pointer: 0x00002aaaab0b0108 ***
在 while 循环中重新分配datap
,因此当您调用 free
时,datap
不再指向分配的内存。
(我假设省略的代码中datapor
的值发生了变化。
由于宏 MAXSIZE,您的 malloc 可能会失败。如果没有足够的内存,这可能会失败。
开始检查 datap = malloc(MAXSIZE) 是否是一个可行的指针。
unsigned char *datap = malloc (MAXSIZE);
if (datap == NULL)
return -1; //malloc failed