所以我想用C做一個遊戲,我有以下幾種類型:釋放由malloc分配的結構的結構會導致錯誤?
typedef struct{
float x;
float y;
} vector;
typedef struct{
vector *vec;
void (*update)();
} velocity;
typedef struct{
vector *vec;
velocity *vel;
void (*move)();
} hero;
這裏是下面的代碼是給我的錯誤:
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
出於某種原因,free(h-> vel)在嘗試釋放速度時給了我一個錯誤。爲什麼會發生?提前致謝!!
我想你的意思在此聲明分配型的英雄,而不是指針英雄*的對象h = malloc(sizeof(hero)); –
請了解如何創建[最小,完整和可驗證示例](http://stackoverflow.com/help/mcve)。 –
錯誤說的是什麼? –