PDA

Visualizza la versione completa : [C] problema realloc return NULL


atomico
03-02-2010, 12:52
ciao a tutti, ho un problema con il realloc, non capisco xch a volte mi restituisce null. So che questo succede quando non c' abbastanza memoria.. ma per un programmino in C stupidissimo e con i pc a nostra disposizione direi che questo impossibile.

la funzione incriminata :



void InserimentoNodo(GRAFO *Grafo, xmlChar NomeNodo[200] )
{
NODO *New;

// se l'array non sufficiente, alloca ulteriore spazio
if ( Grafo->NumNodi == Grafo->MaxNodi )
{ Grafo->MaxNodi += LOTTONODI;
Grafo->PrimoNodo = (NODO *) realloc ( Grafo->PrimoNodo,
Grafo->MaxNodi * sizeof(NODO) );

}
if (Grafo->PrimoNodo==NULL) {
printf("ERRORE REALLOC");
system("pause");
}

New = Grafo->PrimoNodo + Grafo->NumNodi; // la prima casella libera
strcpy (New->Glossa, NomeNodo);
New->Visita = 0;
New->Link = NULL;
Grafo->NumNodi ++ ;
}


L'errore non sempre uguale, l'ho provato su diversi pc.. su uno per esempio fa bene 2 realloc.. e al terzo esce null, su un altro invece si blocca al primo realloc.

da cosa pu dipendere? cosa sbaglio? pls help me, sto sclerando :D

oregon
03-02-2010, 13:06
La id con cui controlli il risultato della realloc deve stare all'interno della if in cui viene eseguita la realloc ...

Se sta fuori, come nel codice che hai scritto, e la prima if non viene eseguita, il controllo non ha senso ...

atomico
03-02-2010, 14:02
si ok, ma il controllo l'ho fatto solo x testare, non quello il problema

analizzando riga x riga, ho scoperto che il problema dovuto da:


strcpy (New->Glossa, NomeNodo);

se lo commento il realloc funziona perfettamente... altrimenti no, why?

Loading