C语言 隔离错误 - 无效指针



我正在附加一个片段。我省略了很多。如果需要,我将附加更多:

 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

相关内容

  • 没有找到相关文章

最新更新