Array dinamici in C

Lokad
Sto andando fuori di matto. In pratica non riesco a capire cosa sbaglio. L'obiettivo è semplice, per prima cosa allocare memoria al puntatore a affinchè punti a un vettore di 10 elementi, dopo stampato i dieci elementi su terminale, vorrei che a puntasse su un vettore di dimensione 20, mantenendo i precedenti valori: utilizzando quindi una realloc. Il problema è che il programma mi stampa (7,8,9,10,1,2,3,4,5,6,7,8,9,10 e altri dieci valori casuali ovviamente). Ora quello che non capisco perchè stampa partendo dal valore 7?


#include

main(){
int *a;
int i;
a=malloc(10*sizeof(int));
if(a==NULL) printf("Allocazione fallita!\n");
for(i=0; i<10; i++){
a=i+1;
printf("%d\n",a);
}
a=realloc(a, 20*sizeof(int));
for(i=0; i<20; i++){
printf("%d\n",a);
}
system("pause");
}

Risposte
Lokad
"Sergio":
A me il tuo codice non dà queste sorprese, ma io uso gcc su Linux ;-)

quindi a te l'uotput

è
1,2,3,4,5,6,7,8,9,10,1,2,3,4,5,6,7,8,9,10 e 10 valori casuali giusto?

quindi perchè devc non fa altrettanto? :roll:

apatriarca
DevC++ una un compilatore datato e pieno di bug e l'IDE stesso ha numerosi problemi. Siccome il progetto è abbandonato da ormai credo 10 anni non vedo alcun motivo di usarlo. Visto che a quanto pare continua ad essere usato lo stesso vediamo di scriverlo in modo più convincente: DEV-C++ E' LA CAUSA DI OGNI MALE.
Cambia IDE, ce ne sono numerosi di buona qualità. Se ci tieni a rimanere nel mondo open-source, allora puoi usare Code::Blocks, se no c'è ad esempio Visual C++ express di Microsoft.

Rispondi
Per rispondere a questa discussione devi prima effettuare il login.