gpt4 book ai didi

c - 尝试释放 int 指针数组时出现 valgrind 错误。不知道为什么

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

这是我的代码/valgrind 错误。谁能帮我弄清楚我哪里出错了。

struct Stores{
int storeNumber;
int *itemCost;
} Stores;

Stores store;
store = calloc(1,numStores*sizeof(store));

store.itemCost = (int*) calloc(1, numItems*sizeof(int)); //(numItems = 2)

store.itemCost[0] = 10;
store.itemCost[1] = 10;

free(store.itemCost); <---- Error here
free(store);

我遇到的 valgrind 错误:

--Invalid read of size 8

最佳答案

首先,没有typedef

Stores store;

错了。无论如何,Stores 不是类型

考虑

typedef struct Stores{
int storeNumber;
int *itemCost;
} Stores;

然后

Stores store;

您根本不需要(相反,不能)calloc()

如果你想玩分配动态内存,你需要改变

Stores *store;  // a pointer

以及从 .-> 的相关成员访问运算符(如适用)。

故事的寓意:启用编译器警告并留意它们。

也就是说,对于第一个 calloc(),您没有转换返回值,下次也不要这样做。

关于c - 尝试释放 int 指针数组时出现 valgrind 错误。不知道为什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35877092/

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