将内存分配给结构内的指针结构

时间:2010-10-26 11:47:49

标签: c memory gcc gdb allocation

如果我有

这样的结构
typedef struct _people {
 char *name;

 bool *exists;

 struct _people **citizens;
} PEOPLE;

如何分配内存以便人们可以访问人员> citizen [0] - >名称?我试过了

info->citizens = malloc(sizeof(PEOPLE *)*numbPeople);

但是当我尝试访问info-> citizen-> name时,我在GDB中收到错误消息:

Program received signal EXC_BAD_ACCESS, Could not access memory.
Reason: KERN_INVALID_ADDRESS at address: 0x0000000000000008

1 个答案:

答案 0 :(得分:4)

(我不喜欢C中的typedefing结构)

让sizeof为你工作。

info->citizens = malloc(numbPeople * sizeof *info->citizens)
if (!info->citizens) { /* could not malloc - do something */ }

int i;
for (i = 0; i < numbPeople; ++i) {
    info->citizens[i] = malloc(sizeof *info->citizens[i]);
    if (!info->citizens[i]) { /* could not malloc - do something */ }
}