我不明白如何释放工作。我知道这发生在我尝试释放内存两次时。但是,这真的让我感到困惑。munmap_chunk():无效指针错误
我试过只发布代码的相关部分。
FILE* file = fopen(path, "r");
if (file == NULL)
{
error(500);
return;
}
// load file's content
BYTE* content;
size_t length;
if (load(file, &content, &length) == false)
{
error(500);
return;
}
这是负载温控功能
bool load(FILE* file, BYTE** content, size_t* length)
{
printf("\nLOAD STARTED\n");
content = NULL;
BYTE *data = NULL;
int size = 0;
while(!feof(file))
{
char ch = fgetc(file);
size += 1;
data = realloc(data, sizeof(BYTE) * (size));
*(data + (size - 1)) = ch;
}
content = &data;
*length = size;
printf("\nLOAD ENDED\n");
return true;
}
过了一会儿,我打电话免费()
printf("\nFREEING CONTENT\n");
// free file's content
free(content);
printf("\nCONTENT FREED\n");
printf语句FREEING CONTENT
作品之后,我得到的
munmap_chunk(): invalid pointer
错误。
'content = &data;' - >>'* content = data;' – wildplasser
'data [size] = ch;' - >'data [size ++] = ch;' – BLUEPIXY
@BLUEPIXY得到了问题 - 你永远不会改变大小,所以你的数据缓冲区永远不会变大。此外,['while(!feof(file))'(几乎总是)错误](http://stackoverflow.com/questions/5431941/why-is-while-feof-file-always-wrong) - *在你的代码中是错误的。 –