構造体内のポインタをNULLに設定する際にいくつか問題があります。私はセグメンテーション違反をしている。これを引き起こしていると私はそれを修正する方法は?なぜこのポインタをNULLに設定しないのですか?
typedef struct data_{
void *data;
struct data_ *next;
}data_el;
typedef struct buckets_{
char *key;
data_el *head_data_p;
}buckets;
typedef struct hash_table_ {
/* structure definition goes here */
int (*hash_func)(char *);
int (*comp_func)(void*, void*);
buckets **buckets_array;
} hash_table, *Phash_table;
int i,size;
size = 10;
table_p -> buckets_array = (buckets **)malloc(sizeof(buckets)*(size+1));
for(i = 0; i < size; i++){
/*Getting segmitation falut here*/
table_p -> buckets_array[i] -> key = NULL;
table_p -> buckets_array[i] -> head_data_p = NULL;
あなたは交換する必要があり
1. 'table_p'は何ですか? 2. 'malloc'の戻り値をキャストしません。3.二次元配列 –
を残しておくべきポインタに一次元配列を入れています。' Phase_table table_p'です。 –