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 è:
Codice PHP:
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