PDA

Visualizza la versione completa : [c] free() ...


qwerty84
25-09-2008, 10:48
Ho un dubbio...
Ho un vettore di struct, allocato con calloc e puntato da g->ps, e vorrei deallocarlo, la mia funzione non va, dā seg.fault.


int remove_p ( tipo_g g)
{
tipo_p p;

p = g->ps;/*ps č l'array che voglio deallocare*/

while(p!= NULL)
{
free(p->stringa);/*dealloco per ogni elemento un suo campo puntato da "stringa", che avevo allocato con calloc*/
p= p+1;
}
free(g->ps);/*dealloco tutta la mem riservata da calloc al vettore ps*/
}

Cos'č che non va?

MItaly
25-09-2008, 18:30
while(p!= NULL)
p non potrā mai essere NULL, visto che continui ad incrementarlo di 1, per cui il while continua a ripetersi e tenti di liberare memoria mai allocata.

menphisx
25-09-2008, 18:34
tipo_g come č definito ?

qwerty84
25-09-2008, 19:52
infatti ho provato a sostituirlo con un for, con la cond di terminazione un po' diversa, funziona tutto, grazie.

Loading