如何分配struct变量的内存

时间:2016-12-07 18:13:25

标签: c pointers malloc

我正在努力弄清楚如何为studentContent变量分配内存。

struct contactInfo {
    char  Name[101];
    char  Assignment[101];
    char  MarkDescription[101];
    char feedBack[12][101];

};
struct contactInfo studentContent

我想使用malloc()为我的结构变量分配内存。填充结构后,我想重新分配内存,所以我只在每个字段中使用尽可能多的空间。

1 个答案:

答案 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 contactInfostudentContent)的实例,只是指向一个实例。

编辑:

根据您的评论,由于您只需要填充单个实例以便一次读取和写入一个数据,因此您不需要使用动态内存分配。只需声明一个实例并每次都覆盖内容。