我有这个结构的问题,我不明白为什么不起作用。我创建了一个具有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个结构分配内存。你可以直接在循环中使用它们。也请记住在使用后释放内存。这通常是一个很好的做法。 –