No lei demasiado el codigo pero evidentemente esto es un error:
Código:
vec = new config[l];
delete vec; //Liberamos memoria
//Añadimos los elementos del archivo al vector
//para trabajar los datos desde memoria y acualizar ante
// algun cambio.
fp2=fopen(path, "r");
fread(&lee2, sizeof(lee2), 1, fp2);
while(!feof(fp2))
{
vec[j].id=lee2.id;
strcpy(vec[j].curso,lee2.curso);
vec[j].prec_c=lee2.prec_c;
strcpy(vec[j].mat,lee2.mat);
vec[j].prec_m=lee2.prec_m;
vec[j].idmat=lee2.idmat;
j++;
fread(&lee2, sizeof(lee2), 1, fp2);
}
fclose(fp2);
No podes primero liberar la memoria y despues acceder a ella, para darte un ejemplo es como que yo alquile una pelicula en el videoclub, la devuelva y despues la vea, imposible.