gpt4 book ai didi

c - 嵌套结构分配内存

转载 作者:行者123 更新时间:2023-11-30 20:04:41 25 4
gpt4 key购买 nike

我有2个结构:

第一个:

 struct Link
{
frame_t *frame;
struct Link *next;
};

typedef struct Link link_t;

第二个:

struct Frame
{
char *name;
unsigned int duration;
char *path; // may change to FILE*
};

typedef struct Frame frame_t;

我尝试使用函数为 Link 结构分配内存,但它不起作用。

调用函数:

link_t* list = NULL;
list = AddItemToList(list);

这就是函数:

link_t* AddItemToList(link_t* item)
{
if (item == NULL)
{
item = (link_t*)calloc(1, sizeof(link_t) );

item->frame = (frame_t*)calloc(1, sizeof(frame_t));


printf("Please insert frame path: ");
scanf("%s", item->frame->path);

printf("Please insert frame duration(in miliseconds): ");
scanf("%d", item->frame->duration);

printf("Please choose a name for that frame: ");
scanf("%s", item->frame->name);
}
else item->next = AddItemToList(item-> next);
return item;
}

最佳答案

您从未在 Link 结构中分配名称路径。您正在扫描未初始化的内存。

item->frame = (frame_t*)calloc(1, sizeof(frame_t));

// You need to add something like:
item->frame->name = (char *)calloc(1, some_string_size);
item->frame->path = (char *)calloc(1, some_string_size);

关于c - 嵌套结构分配内存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37908750/

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