【发布时间】:2017-08-27 14:08:33
【问题描述】:
我对这个结构有疑问,我不明白为什么不起作用。我创建了一个具有 3 个值的结构,我想要这个 SIZE = 100 的数组。但我对 malloc 以及它在这种情况下的工作方式感到困惑。
#define SIZE 100
typedef struct entry {
long id;
int r1;
int r2;
int r3;
};
typedef struct entry * THash; //[SIZE];
THash init ()
{
int i;
THash t = malloc(SIZE*sizeof(struct entry));
for(i = 0; i<SIZE; i++){
t[i] = malloc(sizeof(struct entry));
t[i].id = -1;
t[i].r1 = -1;
t[i].r2 = -1;
t[i].r3 = -1;
}
return t;
}
【问题讨论】:
-
你不需要分配内存两次。第一个malloc就足够了。它为所有 100 个结构分配内存。您可以直接在循环内使用它们。还记得在使用后释放内存。这通常是一种很好的做法。
标签: c pointers hash struct malloc