Das ist mein struct:Initialisierung der dynamischen Array von Strukturen
typedef struct ElementToInsert {
char *key;
char *value;
} element;
Diese meine Funktion ist:
void init_hash(int size, element**arr) {
*arr = malloc(size * sizeof(element*));
if (arr == NULL)
{
printf("Out of memory\n");
return 0;
}
for (int i = 0; i < size; i++) {
(*arr)[i].key = NULL;
(*arr)[i].value = NULL;
}
}
Und die main()
:
void main() {
element *hash_table = NULL;
int hash_table_size = 10;
init_hash(hash_table_size, &hash_table);
}
Das Problem ist, dass, wenn ich starte den Debugger (in Visual Studio 2015), es zeigt mir nicht alle Array-Werte. Ich erwarte, wie etwas zu sehen: hash_table[0] = {key = NULL, value = NULL}, hash_table[1] = {key = NULL, value = NULL}
aber alles, was ich sehe, ist dies:
Ihr Code macht keinen Sinn. '* arr' ist ein Zeiger auf' element', also sollten Sie 'size * sizeof (element)' dafür zuweisen (also * size * Elemente, nicht * size * Zeiger). – melpomene
'* arr' ist dasselbe wie' arr [0] '. Ihre erste Schleifeniteration überschreibt den Zeiger, den Sie vom ersten Aufruf von malloc erhalten haben. – melpomene
'main' sollte' int', nicht 'void' zurückgeben. – melpomene