Я пытаюсь создать хэш-карту в C. Ниже приведен код. Когда я пытаюсь выполнить , присвойте значение элементам Darray (каждый из которых является указателем на узел). Я получаю ошибку сегментации (т. Е. В строках 23 и 24). Может кто-нибудь помочь в том, чтобы указать, где я иду не так.Ошибка сегментации при присвоении значения динамическому массиву узлов, внутри структуры
#include <stdio.h>
#include <stdlib.h>
typedef struct Node {
int data;
struct Node* next;
}Node;
typedef struct Map{
struct Node** Darray;
} Map;
#define SIZE 10
int main()
{
int i=0;
Map* M = malloc(sizeof(Map));
M->Darray = (struct Node**)malloc(sizeof(Node*)*SIZE);
for (i =0;i < SIZE;i++){
M->Darray[i]->data =0;
M->Darray[i]->next =NULL;
}
}
Fyi, динамическое распределение «Карта» здесь не нужно. И где-то в «Карта» должна быть величина массива указателей «Node», или вы собираетесь найти расширение, сокращение и повторное использование, когда факторы нагрузки вознесены невозможными. Наконец, [не бросайте 'malloc()' и друзей в C-программы] (https://stackoverflow.com/questions/605845/do-i-cast-the-result-of-malloc). – WhozCraig
Спасибо! WhozCraig –