J'ai deux structtableau Libérant de struct dans struct
struct obj_t {
int id;
float x;
float y;
};
struct cluster_t {
int size;
int capacity;
struct obj_t *obj;
};
Comme vous pouvez le voir, il y a pointeur d'abord obj_t
à l'intérieur cluster_t
Ce que je veux faire est de libérer tous les obj_t de tableau à l'intérieur cluster_t
Dois-je l'écrire avec for
comme ceci?
void clear_cluster(struct cluster_t *c)
{
for(int i = 0; i<c->size;i++)
{
free(&c->obj[i]);
}
free(c->obj);
}
Ou est-il correct de libérer la mémoire juste comme ceci?
void clear_cluster(struct cluster_t *c)
{
free(c->obj);
}
Au verso de la séquence où vous avez affecté. –
* "Comme vous pouvez le voir, le tableau de' obj_t' se trouve dans 'cluster_t'" "- je ne vois aucun tableau dans' cluster_t'. Je peux voir un pointeur mais c'est une chose différente. – axiac
Il n'y a pas non plus de pointeur sur array dans votre 'struct'! – Olaf