【发布时间】:2020-10-16 23:01:19
【问题描述】:
typedef struct inventory
{
char *name;
int quantity;
double price;
struct inventory* next_inventory;
} invent;
int main(void)
{
invent *one=malloc(sizeof(invent));
invent *two=malloc(sizeof(invent));
invent *three=malloc(sizeof(invent));
one->next_inventory=two;
two->next_inventory=three;
three->next_inventory=NULL;
one->name=malloc(256);
...(repeat two->name, three->name)
printf("name: ");
scanf("%s", one->name);
printf("qunatity: ");
scanf("%d", &one->quantity);
printf("price: ");
scanf("%lf", &one->price);
...(repeat scanf() for two, three)
while(one!=NULL)
{
printf("%s %d %.0f\n", one->name, one->quantity, one->price);
printf("check\n");
one=one->next_inventory;
}
free(one->name);
free(two->name);
free(three->name);
free(one);
free(two);
free(three);
return 0;
free(one->name);不起作用。我检查了另一个 free(),使用 printf("check");, two->name, three->name, one ...它起作用了。为什么只有 free(one->name) 不起作用?我能做些什么来解决这个问题?给我建议。
【问题讨论】:
-
free(one->name); doesn't work“不起作用”是什么意思?您如何确切地看到该陈述“不起作用”? -
那么
one是NULL。我知道它是 NULL,因为如果它不是 NULL,那么循环会一直循环。 -
@KamilCuk 分段错误:11。程序已关闭。
-
@user253751 那我该怎么解决这个问题呢?我应该返回我使用的内存。(使用 malloc)
-
如果库存中有 100 个元素怎么办?你继续做一个->next_inventory->next_inventory...100 次...->name ?
标签: c struct malloc char-pointer