/********************************************************************************************************* * Nome: allocazione.c * * Scopo: Esempio che mostra allocazione dinamica memoria in C. * * Data: 10/11/2006. * * Autore: Marco Buttolo. * **********************************************************************************************************/ #include // prototipi di malloc(), realloc() e free() #include // prototipi di gets() e printf() #include // prototipo di atoi() int main(void) { int val=sommaInt(); printf("\n %d", val); } int sommaInt(void) { register i, j; int retcode = 0; long sum = 0L; char inBuf[10]; int *iPtr, *iPtrBackup; //alloco dinamicamente memoria if(!(iPtr = (int *)malloc(sizeof(int)))) return(-1); for(i = 0; gets(inBuf); i++) { iPtr[i] = atoi(inBuf); sum += iPtr[i]; iPtrBackup = iPtr; if(!(iPtr = (int *)realloc(iPtr,sizeof(int)*(i+2)))) { retcode = -1; iPtr = iPtrBackup; break; } } //libero memoria free(iPtr); return(retcode); }