【发布时间】:2014-04-21 13:24:01
【问题描述】:
我有一个类似下面的结构:
typedef struct author
{
char letter;
char *name[200];
int counter;
} Aut, *i_aut;
它由一个字符、“字符串”和 int 数组组成。我的目标是在内存中为 30 个此类结构的数组分配空间,因此我尝试了以下操作:
i_aut lista_autores=calloc(30,sizeof(Aut));
但是,它总是返回“分段错误”。我也尝试一次初始化一个,但结果相同。我的问题是,我如何分配这种内存以及以后如何访问它?
提前感谢您,如有任何错别字,我们深表歉意。
【问题讨论】:
-
使用
char *name[200];,您可以在每个结构中拥有 200 个不同的字符串(如您所描述的,一个字符串数组)。但是:您也需要保留琴弦。如果你只想要一个最大的字符串。长度为 200,删除*。 -
你是如何访问
name的? -
“分段错误”什么时候发生?当您只做
i_aut lista_autores=calloc(30,sizeof(Aut)); free(lista_autores);而中间什么都不做时会发生这种情况吗? -
我感觉你想要
char name[200],因为作者只有一个名字(长度最多199)?