01: // rivisitazione problema durata automatica VLA con malloc()
02: #include<stdio.h>
03: #include<stdlib.h>
04: 
05: // nelle intenzioni, genero n lanci di un dado e restituisco il relativo valore
06: int *genera_array_lanci(int n)
07: {
08: 
09:   int *v = malloc(n * sizeof(int));   // era int v[n];
10: 
11:   for(int i=0; i<n; ++i)
12:     v[i] = rand()%6 + 1;
13: 
14:   printf("DEBUG: restituisco indirizzo %p\n", v);
15:   return v;
16: } // anche quando la funzione termina l'area allocata con malloc() rimane e non viene distrutta come nel caso dei VLA
17: 
18: int main(int argc, char **argv){
19: 
20:   int n;
21: 
22:   printf("Quanti lanci di dado vuoi simulare? "); 
23:   scanf("%d", &n);
24: 
25:   int *lanci = genera_array_lanci(n);
26: 
27:   printf("DEBUG: la funzione ha restituito l'indirizzo %p\n", lanci);
28:   printf("Hai ottenuto i seguenti valori: ");
29:   for(int i=0; i<n; ++i)
30:     printf(" %d", lanci[i]);
31: 
32:   free(lanci); // nei VLA non usabile...
33: 
34:   printf("\n");
35: 
36:   return 0;
37: }
38: 
39: 


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