【发布时间】:2015-09-13 00:21:44
【问题描述】:
我正在尝试学习 C,但我在使用它附带的整个内存分配方面遇到了问题。我不知道在哪里创造空间。这是我提供的标题。
typedef struct list_item {
char *value;
struct list_item *next;
struct list_item *prev;
} list_item_t;
typedef struct single_list {
list_item_t *head;
list_item_t *tail;
} slist_t;
void init(slist_t *list);
我用以下方法实现了 init 函数:
void init(slist_t *list){
list->head = (list_item_t *) malloc(sizeof(list_item_t));
list->tail = (list_item_t *) malloc(sizeof(list_item_t));
}
但我使用运行代码
int main(){
struct list_t test;
init(test);
return 0;
我收到一条错误消息,提示“测试”的存储大小未知。我知道我必须定义测试空间,但我应该在哪里写这个以及如何写?谢谢大家。
【问题讨论】:
-
struct list_t在哪里定义?您正在显示一个名为slist_t的类型定义。 -
您不应该为自定义类型使用后缀
_t。另外,不要将malloc和朋友的结果投射到 C 中。 -
另外,
init是slist_t的先驱,而不是struct list_t。 (不评论slist_t和list_t之间的区别,但事实上一个是指针,另一个不是。)
标签: c memory struct size storage