我正在尝试构建一个初始化哈希表,其指针指向我程序中的另一个结构。但是当我尝试初始化(H)时,它似乎给了我一个段错误。我想我可能不正确地分配内存,但我不确定这是否是分段错误的真正含义。它的设置方式,H->hashtable应该是一个hashnodes数组吧?hashnodes 本身是指向我的其他结构的指针。为什么我在初始化时只会出现段错误?
#include <stdio.h>
#include <stdlib.h>
typedef struct Position{
char data[12];
struct Hashnode *previous;
struct Position *next;
char letter;
char direction[5];
} *position;
typedef struct Hashnode{
struct Position *INSIDE;
} *hashnode;
typedef struct hash_table{
hashnode *hashtable
} *HTABLE;
HTABLE NewHashtable(){
HTABLE H = (HTABLE) malloc(sizeof(struct hash_table));
if(H == NULL){ printf("Malloc for new hashtable failed."); exit(1);}
return H;
}
void initialize(HTABLE H){
H->hashtable = (hashnode*) malloc(100003*sizeof(hashnode));
int toofer;
for(toofer = 0; toofer<100003; toofer++){
H->hashtable[toofer]->INSIDE = NULL;
}
}
int main(){
HTABLE H = NewHashtable();
initialize(H);
return 0;
}