我不明白如何釋放工作。我知道這發生在我嘗試釋放內存兩次時。但是,這真的讓我感到困惑。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) - *在你的代碼中是錯誤的。 –