That seems like a very unlikely line to CAUSE such an error. Most likely, you are either:
1. Using memory after you've freed it.
2. Writing over the end of other previously allocated memory.
I still can't found the cause of the error.
This is the whole code
Code:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX_NOM 20
#define TOTAL_LINIES 2
typedef struct
{
char nom_parada[MAX_NOM];
int distancia_anterior;
int temps_anterior;
} parada;
typedef struct
{
char nom_linia[MAX_NOM];
int n_parades;
parada *dades_parades;
} linia;
void CalculaDisTemps(parada *parades, int longitud, float *distancia, float *temps){
int i;
*distancia = 0;
*temps = 0;
i=0;
do{
*distancia = *distancia + (*parades).distancia_anterior;
parades++;
i++;
}while (i<longitud);
parades = parades - i;
i=0;
do{
*temps = *temps + (*parades).temps_anterior;
parades++;
i++;
}while (i<longitud);
}
void OmplirDades (parada *parades, int nparades){
int i;
for(i=0;i<nparades;i++){
fflush(stdin);
printf("Introdueixi el nom de la parada:\n");
gets(parades->nom_parada);
printf("Introdueix la distància que hi ha des de la parada anterior:\n");
scanf("%d", ¶des->distancia_anterior);
printf("Introdueix el temps que ha passat des de la parada anterior:\n");
scanf("%d", ¶des->temps_anterior);
parades++;
}
parades = (parades - nparades);
}
void OmplirDadesLinia(linia lintren){
printf("Introdueix el nom de la línia:\n");
gets (lintren.nom_linia);
printf("Introdueix el nombre de parades de la línia:\n");
scanf("%d", lintren.n_parades);
lintren.dades_parades = (parada*)malloc(sizeof(parada)*lintren.n_parades);
OmplirDades (lintren.dades_parades, lintren.n_parades);
}
int main(){
float distancia;
float temps;
linia lintren;
OmplirDadesLinia(lintren);
CalculaDisTemps(lintren.dades_parades, lintren.n_parades, &distancia, &temps);
printf("%f\n", distancia);
printf("%f\n", temps);
free(lintren.dades_parades);
}