Bueno, la cosa es que he tengo dos estructuras, y cuando reservo memoria para una de ellas creo que lo hago mal.
Aqui declaro las estructuras y defino MAX.
Código:
#include <stdio.h>
#include <stdlib.h>
#define MAX 20
typedef struct _Mazmorra {
int x;
int y;
char c;
}Mazmorra;
typedef struct _Punto{
Mazmorra *P_final;
Mazmorra *P_principio;
Mazmorra *p_tamanyo;
Mazmorra *tamanyo_mazmorra[MAX][MAX];
}Punto;
Aqui creo que reservo memoria, y pongo todo a NULL. Creo que aqui esta el fallo pero no se donde.
Código:
Punto* inicializar_mazmorra(){
Punto *punto;
int x,y;
punto=(Punto*)malloc(sizeof(Punto));
if(punto==NULL){
printf ("error al reservar memoria");
}
punto->P_final=NULL;
punto->P_principio=NULL;
punto->p_tamanyo=NULL;
for(x=0;x<MAX;x++){
for(y=0;y<MAX;y++){
punto->tamanyo_mazmorra[x][y]=NULL;
}
}
}
En esta libero la memoria, cuando compilo me da error al liberar la memoria, lo que me hace pensar que no reservo bien.
Código:
Punto* Liberarmemoria(){
Punto *punto;
int x,y;
free(punto->P_final);
free(punto->P_principio);
free(punto->p_tamanyo);
for(x=0;x<MAX;x++){
for(y=0;y<MAX;y++){
free(punto->tamanyo_mazmorra[x][y]);
}
}
}
Aqui el main, la cosa es que cuando complio e inteto escribir sobrela variable x en tamanyo_mazmorra me da eror y el programa finaliza
Código:
int main(){
FILE *archivo;
Punto *punto;
int x;
punto =inicializar_mazmorra();
punto->tamanyo_mazmorra[1][1]->x = 5;
archivo = fopen("prueba.dat","r");
if(archivo==NULL){
printf ("error");
}
printf ("%c",punto->tamanyo_mazmorra[1][1]->x);
//x = leer_archivo_mazmorra(archivo,punto);
punto = Liberarmemoria();
fclose(archivo);
}
Espero no ser de mucha molestia, un saludo