Ho trovato risposte utili alle domande di altre persone qui infinite volte su StackOverflow, ma questa è la prima volta che faccio una mia domanda personale.Assegnazione dinamica di una serie di strutture
Ho una funzione C che ha bisogno di allocare dinamicamente lo spazio per una matrice di strutture e quindi di riempire i membri della struct di ciascun elemento dell'array con i valori estratti da un file. L'assegnazione dei membri funziona bene al primo passaggio del ciclo, ma al secondo passaggio viene visualizzato un errore di segmentazione.
ho scritto questo programma rapido che illustra gli elementi essenziali del problema che sto avendo:
#include <stdlib.h>
#include <stdio.h>
typedef struct {
int a;
int b;
} myStruct;
void getData(int* count, myStruct** data) {
*count = 5;
*data = malloc(*count * sizeof(myStruct));
int i;
for (i = 0; i < *count; i++) {
data[i]->a = i;
data[i]->b = i * 2;
printf("%d.a: %d\n", i, data[i]->a);
printf("%d.b: %d\n", i, data[i]->b);
}
}
int main() {
int count;
myStruct* data;
getData(&count, &data);
return 0;
}
L'uscita che ricevo da questo è:
0.a: 0
0.b: 0
Segmentation fault
non sono sicuro dove sta il mio problema Sembra che la chiamata malloc stia assegnando spazio sufficiente a una struttura solo quando dovrebbe allocare lo spazio per cinque.
Qualsiasi aiuto sarebbe molto apprezzato.
È necessario dereferenziare 'dati' anche nella stampa – MahlerFive
Sì, hai ragione. Fisso. – Mysticial
Grazie per la risposta incredibilmente veloce! –