我正在努力弄清楚如何为studentContent
变量分配内存。
struct contactInfo {
char Name[101];
char Assignment[101];
char MarkDescription[101];
char feedBack[12][101];
};
struct contactInfo studentContent
我想使用malloc()
为我的结构变量分配内存。填充结构后,我想重新分配内存,所以我只在每个字段中使用尽可能多的空间。
答案 0 :(得分:1)
第一个赋值将ptr
设置为局部变量studentContent
的地址,但是下一行会覆盖它。它将ptr
更改为指向动态分配的缓冲区,其中包含2个struct contactInfo
实例的空间。
如果您想拥有struct contactInfo
的数组,并且该数组的元素数量会增加,因为您需要填充更多struct contactInfo
个实例,您将ptr
传递给realloc
,其大小为n * sizeof *ptr
,其中n
是数组中元素的数量。
struct contactInfo *tmp_ptr = realloc(ptr, n * sizeof *ptr);
if (tmp_ptr == NULL) {
perror("realloc failed");
exit(1);
}
ptr = tmp_ptr;
请注意,您不必在原始代码中声明struct contactInfo
(studentContent
)的实例,只是指向一个实例。
编辑:
根据您的评论,由于您只需要填充单个实例以便一次读取和写入一个数据,因此您不需要使用动态内存分配。只需声明一个实例并每次都覆盖内容。