He encontrado respuestas útiles sobre las preguntas de otras personas innumerables veces aquí en stackoverflow, pero esta es la primera vez que hago una pregunta por mi cuenta.Asignación dinámica de una matriz de estructuras
Tengo una función C que dinámicamente necesita asignar espacio para una matriz de estructuras y luego llenar los miembros de la estructura de cada elemento de la matriz con los valores extraídos de un archivo. La asignación de miembros funciona bien en la primera pasada del ciclo, pero recibo una falla de segmentación en el segundo pase.
He escrito este programa rápido que ilustra los elementos esenciales del problema que estoy teniendo:
#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;
}
La salida que recibo de esto es:
0.a: 0
0.b: 0
Segmentation fault
No estoy seguro donde yace mi problema Parece que la llamada malloc solo está asignando suficiente espacio para una estructura cuando debe asignar espacio para cinco.
Cualquier ayuda sería muy apreciada.
Necesita desreferenciar 'datos' en los printfs también – MahlerFive
Sí, tiene razón. Fijo. – Mysticial
¡Gracias por la respuesta increíblemente rápida! –