Je suis en train de faire un jeu en C et je les types suivants:Libérer la structure des structures allouées par malloc provoque une erreur?
typedef struct{
float x;
float y;
} vector;
typedef struct{
vector *vec;
void (*update)();
} velocity;
typedef struct{
vector *vec;
velocity *vel;
void (*move)();
} hero;
Et est le code suivant ici qui me donne une erreur:
hero *h;
// allocate memory for hero
h = malloc(sizeof(hero*));
// allocate memory for velocity
h->vel = malloc(sizeof(velocity*));
// initialize vectors
h->vec = malloc(sizeof(vector*));
h->vel->vec = malloc(sizeof(vector*));
free(h->vec); // free hero vector
free(h->vel->vec); // free velocity vector
free(h->vel); // free velocity
free(h); // free hero
Pour une raison , free (h-> vel) me donne une erreur en essayant de libérer la vélocité. Pourquoi cela arrive-t-il? Merci d'avance!!
Je pense que vous voulez dire l'attribution d'un objet du héros de type au lieu du héros de pointeur * dans cette déclaration h = malloc (taille de (héros)); –
Veuillez apprendre comment créer un [Exemple minimal, complet et vérifiable] (http://stackoverflow.com/help/mcve). –
Que dit l'erreur? –