gpt4 book ai didi

c - 释放会让事情变得更糟吗?

转载 作者:行者123 更新时间:2023-11-30 17:46:19 24 4
gpt4 key购买 nike

当我尝试释放一个被 malloc 的对象时,运行 valgrind 似乎意味着我让事情变得更糟。例如,这是我的代码:

for(next_token = TKGetNextToken(tokenizer); next_token != NULL; next_token = TKGetNextToken(tokenizer))
{
ItemType* item = malloc(sizeof(ItemType));
item->data = to_lower(next_token);
item->fileName = filename;
item->occ = 1;
HM_Put(hm, item);
free(next_token);
}

现在,通过上面的代码,我被告知字节肯定在项目被 malloc 的行上丢失了。但是,如果我在 free(next_token) 下添加 free(item),不仅会保留肯定丢失的语句,而且还会在堆摘要之前收到大量无效读取。如果有人可以为我提供帮助,我完全不知道如何解决这个问题。谢谢

最佳答案

我猜测 next_token 是一个字符串,并且 to_lower 不会创建新字符串。这意味着在释放 next_token 后,item->data 仍然指向已释放的内存。

关于c - 释放会让事情变得更糟吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19348291/

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