我正在尝试为如下定义的结构数组声明和分配内存:
typedef struct y{
int count;
char *word;
} hstruct
我现在拥有的是:
hstruct *final_list;
final_list = calloc (MAX_STR, sizeof(hstruct));
MAX_STR
是char word
选择器的最大大小。
我计划能够将其称为:
final_list[i].count
,这将是一个整数和
final_list[i].word
,这将是一个字符串。
i
是一个整数变量。
但是,此类表达式始终返回(null)
。我知道我做错了什么,但我不知道是什么。任何帮助,将不胜感激。感谢。
答案 0 :(得分:1)
包含指针的结构不直接保存数据,但保存指向数据的指针。指针本身的内存通过calloc
正确分配,但它只是一个地址。
这意味着你有责任分配它:
hstruct *final_list;
final_list = calloc(LIST_LENGTH, sizeof(hstruct));
for (int i = 0; i < LIST_LENGTH; ++i)
final_list[i].word = calloc(MAX_STR, sizeof(char));
这还需要在释放struct本身的数组之前释放final_list[i].word
指向的内存。