gpt4 book ai didi

c - munmap_chunk() : invalid pointer error

转载 作者:太空宇宙 更新时间:2023-11-04 04:59:37 30 4
gpt4 key购买 nike

我不明白释放是如何进行的。我知道当我尝试两次释放内存时会发生这种情况。然而,这真的难倒了我。

我试着只发布代码的相关部分。

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;
}

稍后我调用 free()

printf("\nFREEING CONTENT\n");
// free file's content
free(content);
printf("\nCONTENT FREED\n");

printf 语句 FREEING CONTENT 起作用之后我得到了

munmap_chunk():无效指针 错误。

最佳答案

问题是:

content = &data;

它分配函数返回后超出范围的局部变量的地址。由于 content 是函数参数,因此不会将任何内容写入它指向的位置。你是想写吗

*content = data;

相反?如果是这样,你不应该设置 content = NULL 因为你想使用通过调用 load(file, &content, &length) 传递的地址。

关于c - munmap_chunk() : invalid pointer error,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36664474/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com