Ich versuche eine Hash-Map in C zu erstellen. Unten ist der Code. Wenn ich versuche den Elementen von Darray einen Wert zuzuordnen (von denen jeder ein Zeiger auf einen Knoten ist) bekomme ich einen Segmentierungsfehler (d. H. In Zeile 23 und 24). Kann jemand helfen, aufzuzeigen, wo ich falsch liege?Segmentierungsfehler beim Zuweisen von Wert zu einem dynamischen Array von Knoten innerhalb einer Struktur
#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, dynamische Zuordnung von 'Map' ist hier nicht notwendig. Und irgendwo in 'Map' sollte die Größe des' Node'-Pointer-Arrays liegen, oder Sie werden Expansion, Reduktion und Umhashing finden, wenn die Lastfaktoren nicht aufgefahren sind. Schließlich, [werfen Sie nicht 'malloc()' und Freunde in C-Programme] (https://stackoverflow.com/questions/605845/do-i-cast-the-result-of-malloc). – WhozCraig
Danke! WhozCraig –