プログラム内の別の構造体を指すポインタを持つハッシュテーブルを初期化しようとしています。しかし、初期化(H)しようとすると、セグメンテーション違反が発生するようです。メモリの割り当てが間違っている可能性があると思いますが、それがセグメンテーション違反の実際の意味であるかどうかはわかりません。H->hashtable の設定方法は、ハッシュノードの配列である必要があります。ハッシュノード自体は、私の他の構造体へのポインターです。初期化時にのみセグ フォールトが発生するのはなぜですか?
#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;
}