[C] Domanda sulla realloc
Salve ragazzi, io avrei una domanda sulla realloc:
In questo programma "n" è il numero iniziale degli elementi del vettore mentre "s" è il numero di elementi che voglio aggiungere dalla posizione vettore[n] fino a vettore[n+s-1]
Se io lo scrivo in questo modo e cioè con la realloc fuori dalla funzione aggiungi_elementi, il programma funziona.
Ma se lo metto dentro alla funzione, il programma funziona a meno che "n=2".
Se "n=2" successivamente dalla funzione "leggi_vettore" escono fuori valori strani.
Io ho fatto il debug all'interno della funzione aggiungi_elementi, e gli elementi vengono memorizzati correttamente.
Il problema è solo dopo all'uscita della funzione che ci sono dei valori strani, se la realloc è interna alla funzione, ed n=2.
Perchè? Non capisco il senso...
In ogni caso quello che vorrei sapere è se ci sono contro-indicazioni nel mettere la realloc all'interno della funzione aggiungi_elementi.
Grazie mille per la risposta
printf ("Inserisci altri %d elementi \n", s); vettore=realloc(vettore,(n+s)*sizeof(int)); aggiungi_elementi(vettore, n, s);
In questo programma "n" è il numero iniziale degli elementi del vettore mentre "s" è il numero di elementi che voglio aggiungere dalla posizione vettore[n] fino a vettore[n+s-1]
Se io lo scrivo in questo modo e cioè con la realloc fuori dalla funzione aggiungi_elementi, il programma funziona.
Ma se lo metto dentro alla funzione, il programma funziona a meno che "n=2".
Se "n=2" successivamente dalla funzione "leggi_vettore" escono fuori valori strani.
Io ho fatto il debug all'interno della funzione aggiungi_elementi, e gli elementi vengono memorizzati correttamente.
Il problema è solo dopo all'uscita della funzione che ci sono dei valori strani, se la realloc è interna alla funzione, ed n=2.
Perchè? Non capisco il senso...
In ogni caso quello che vorrei sapere è se ci sono contro-indicazioni nel mettere la realloc all'interno della funzione aggiungi_elementi.
Grazie mille per la risposta

Risposte
Dentro la funzione "aggiungi_elementi" riassegni la variabile "vettore". Ma fuori dalla funzione, la variabile vettore ha ancora il vecchio valore. Devi restituire il nuovo valore di vettore, oppure passare il suo indirizzo alla funzione.
"claudio86":
Dentro la funzione "aggiungi_elementi" riassegni la variabile "vettore". Ma fuori dalla funzione, la variabile vettore ha ancora il vecchio valore. Devi restituire il nuovo valore di vettore, oppure passare il suo indirizzo alla funzione.
Ahh ok capito, grazie mille
