为什么这个malloc在C中不起作用?

Igo*_*r K 0 c malloc pointers

只是尝试制作一种哈希表,每个节点都是一个链表.

刚刚初始化空间时遇到麻烦,我做错了什么?

#include <stdlib.h>

typedef struct entry {
 struct entry *next;
 void *theData;
} Entry;


typedef struct HashTable {
 Entry **table;
 int size;
} HashTable;

int main(){
 HashTable *ml;
 ml = initialize();
 return 0;
}

HashTable *initialize(void)
{
 HashTable *p;
 Entry **b;
 int i;


 if ((p = (HashTable *)malloc(sizeof(HashTable *))) == NULL)
  return NULL;
 p->size = 101;

 if ((b = (Entry **)malloc(p->size * sizeof(Entry **))) == NULL)
         return NULL;

 p->table = b;

 for(i = 0; i < p->size; i++) {
  Entry * b =  p->table[i];
  b->theData = NULL;
  b->next = NULL;
     }

 return p;
}
Run Code Online (Sandbox Code Playgroud)

Nav*_*een 9

您需要更改sizeof(HashTable*)sizeof(HashTable),同样sizeof(Entry **)sizeof(Entry *).第二件事就是Entry你需要malloc在循环中再次使用内存来分配内存.