Array dinamici in C
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");
}
#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
"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?

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.
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.