Это мои ошибки кода/valgrind. Может кто-нибудь помочь мне выяснить, где я ошибаюсь.Получение ошибок valgrind при попытке освободить массив int pointer. Не знаю, почему
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
__Пожалуйста, не редактируйте, чтобы изменить вопрос, как только у вас есть ответ .__ Вы всегда можете указать ___add___ дополнительную информацию, сохраняя исходный вопрос без изменений. –
Более идиоматический код 'store.itemCost = calloc (sizeof * store.itemCost, numItems);' – chux
при назначении возвращаемого значения из 'calloc()' получатель уступки должен быть указателем, а не экземпляром структуры , поэтому в этой строке есть две проблемы: «Магазин хранит;» 1) «Магазины» - это «неполный тип», поэтому он не будет компилироваться. 2) приемник указателя должен быть указателем. Предложите: 'struct Stores * store;' – user3629249