フリーズの仕組みがわかりません。私はメモリを2回解放しようとしたときにこれが起こることを知っています。しかし、これは本当に私を困惑させています。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;
}
後、私は(無料呼んでいる間、これは負荷fucntion
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に問題があります - あなたは 'size'を決して変更しないので、' data'バッファは決して大きくなりません。また、[while(!feof(file))は(ほとんど常に)間違っています。](http://stackoverflow.com/questions/5431941/why-is-while-feof-file-always-wrong) - それは*あなたのコードで*間違っています。 –