Buonasera, ho riscontrato un problema con il seguente codice:
Praticamente la terza volta che immetto il numero (nel ciclo do-while del main) mi dice "realloc(): invalid next size: indirizzo_esadecimale".codice:/* Prendere in input vettore di 27 numeri e dare come risultato 1 se la * sequenza di numeri è perfetta, 0 se non lo è */ #include <stdio.h> #include <stdlib.h> int isPerfect (int *seq,int isperfect) { int i=0; for (i=0;i<(sizeof(seq)/sizeof(int));i++) { i++; if (seq[i]==seq[seq[i]+2]) isperfect=1; else isperfect=0; } return isperfect; } int main() { int i=0,*seq=NULL,n,isperfect=0; printf("Inserisci 0 per terminare la sequenza\n"); do { seq=(int *)realloc(seq,((i+1)*sizeof(int))); //Acquisisco printf("\nInserisci il %d numero: ",i+1); scanf("%d",&n); //Inserisco valore nell'array i++; seq[i]=n; } while(n!=0); //Chiamo la funzione isPerfect isPerfect(seq,isperfect); if (isperfect==1) printf("La sequenza di numeri è perfetta"); else printf("La sequenza di numeri non è perfetta"); free(seq); return 0; }
Tralasciando la correttezza del'algoritmo in sé vorrei sapere il motivo per cui mi da errore sulla realloc. Ho provato ad usare valgrind (opero in ambiente Linux, su Ubuntu) per vedere se centrava il memory leak, seppur ero certo del fatto che non potesse essere un problema del genere, ed infatti non è quello il problema. Grazie in anticipo![]()

Rispondi quotando
Per il 3° punto lo so! Esco dall'array in quanto eseguo il ciclo più volte di quante dovrei, ma dovevo finire infatti l'algoritmo e volevo solamente capire l'errore sulla realloc. Il 2° punto non mi è molto chiaro,se è possibile potresti espormelo meglio?

