Pagina 1 di 1

Realloc [C]

Inviato: giovedì 25 settembre 2008, 12:43
da Aegis80
Ragazzi per la prima volta sto utilizzando la realloc con non pochi problemi.. Spero possiate aiutarmi !!!
Allego a seguito la parte di codice che mi crea problemi ....

Codice: Seleziona tutto

 while(!feof(ifp))
   {
     if (sw==0)
       per=calloc(1,sizeof(agenda));
     if (per==NULL)
       {
	 perror("errore nella realloc\n");
	 exit(-1);
       }
     else
       {
	 per=realloc(per,sizeof(agenda));
	 if (per==NULL)
	   {
	     perror("errore nella realloc\n");
	     exit(-1);
	   }
       }
     sw=1;
Praticamente vorrei creare un array dinamico di strutture agenda e allocare un nuovo elemento ogni volta che leggo da file un nuovo appuntamento.
Quindi nel codice alloco lo spazio per una struttura agenda e poi man mano che leggo vorrei allocare un nuovo posto per un nuovo elemento.

Evidentemente sbaglio qualcosa nella sintassi della realloc ma non so dove... Sapete aiutarmi?

Re: Realloc [C]

Inviato: giovedì 25 settembre 2008, 13:53
da Dahman
L'errore ce l'hai durante la compilazione o durante l'esecuzione? che tipo di errore?
Che tipo di variabile é il puntatore per?

Ciao

dahman

edit: tieni presente che realloc deve avere un size pari alla nuova dimensione che deve avere il tuo blocco di memoria.
Faccendo realloc(per, sizeof(agenda)) in pratica stai ripetendo sempre la stessa operazione, ossia allocare uno spazio sufficiente per una sola agenda.
Dovresti fare realloc(per, nuovo_numero_agende*sizeof(agenda)), dove nuovo_numero_agende va aumentato di uno ogni volta che carichi dal file una nuova agenda.

Re: Realloc [C]

Inviato: giovedì 25 settembre 2008, 14:05
da bite
Beh, ci stai dicendo veramente poco.

Resta il dubbio che roba sia 'agenda', immagino una struttura. Ma allora che gusto c'è a riallocarla sempre della stessa dimensione?