为结构数组分配内存

时间:2014-03-16 10:31:18

标签: c struct malloc calloc

我的结构就像跟随者一样:

typedef struct author
{
char letter;
char *name[200];
int counter;
} Aut, *i_aut;

它由一个char和一系列" Strings"组成。和int。我的目标是在内存中为这种结构中的30个数组分配空间,因此我尝试了类似下面的内容:

i_aut lista_autores=calloc(30,sizeof(Aut));

然而,它总是返回"分段错误"。我试图一次初始化一个,但结果相同。我的问题是,如何分配此类内存以及如何在以后访问它?

提前感谢您,对于任何错字都感到抱歉。

2 个答案:

答案 0 :(得分:0)

struct member name是一个包含200个指针的数组 您可能希望将malloc的结果分配给数组的元素。

struct author *i_aut;
i_aut = malloc(sizeof *i_aut);
if (i_aut) {
    for (size_t k = 0; k < 200; k++) {
        i_aut->name[k] = malloc(30);
        if (!i_aut->name[k]) /* error */;
        /* DONT FORGET TO FREE EACH NAME LATER ON */
    }
    free(i_aut);
}

答案 1 :(得分:0)

尝试使用此

    struct author **i_aut;
    i_aut=(struct author **)malloc(30*sizeof(struct author*));
    for(i=0;i<30;i++)
        i_aut[i]=(struct *)malloc(sizeof(struct author)); 

之后你不需要单独为name []分配空间。 你有数组struct author *的30个元素的数组 并且您可以使用访问所有三种类型         i_aut [Ⅰ] - &GT;信;         i_aut [Ⅰ] - &GT;名称[J];         i_aut [Ⅰ] - &GT;计数器;  我在这里<30