Ciao a tutti !
Ho un problema con la funzione di riallocazione di un array dinamico. La funzione che mi riporta il libro la seguente :
Ora la assert dovrebbe controllare che le condizioni siano vere, e in quel caso il programma procede correttamente. Per quanto riguarda la condizione "a->item!=NULL" è il banale controllo che assicura la corretta riallocazione; quel che non capisco è perche "new_size" debba essere uguale a 0 ! Considerando anche che GROWING_DELTA è una costante positiva a maggior ragione new_size, per come inizializzata, sarà >0. Dov'è l'errore ?codice:void array_resize(TArray *a, int new_length){ if(new_length> (a->size) || new_length< (a->size-SHRINK_DELTA)){ int new_size=new_length+GROWING_DELTA; a->item=realloc(a->item, new_size*sizeof(TInfo)); assert(new_size==0 || a->item!=NULL); } a->length=new_length; }