01: // allocazione dinamica memoria con malloc() e free(), controllo errore allocazione
02: #include<stdio.h>
03: #include<stdlib.h>
04: 
05: int main(int argc, char **argv){
06: 
07:   int sum=0;
08:   unsigned long n;
09: 
10:   printf("Quanti interi vuoi sommare? ");
11:   scanf("%lu", &n);
12: 
13:   int *a = malloc(sizeof(int)*n); // con VLA potevo usare int a[n]; 
14:   if(!a) // equivalente a a==NULL
15:   {
16:     printf("ERRORE: non e' stato possibile allocare la memoria richiesta per %lu interi (%lu byte)\n", n, n*sizeof(int));
17:     exit(1);
18:   }
19: 
20:   for(int i=0; i<n; ++i)
21:   {
22:     printf("Inserisci numero intero: ");
23:     scanf("%d", &a[i]);
24:     sum += a[i];
25:   }
26: 
27:   printf("Hai inserito i seguenti numeri:\n");
28:   for(int i=0; i<n; ++i)
29:   {
30:     printf("%3d: %6d\n", i+1, a[i]);
31:   }
32: 
33:   free(a); // con VLA NON possibile
34: 
35:   printf("Il totale vale: %d\n", sum);
36:     
37: 
38: 
39: 
40:   return 0;
41: }
42: 
43: 


Se avete commenti o osservaƶioni su questa pagina
mandate un messaggio di posta elettronica a bertoƶƶi@ce.unipr.it