01: // calloc() vs malloc()
02: #include<stdio.h>
03: #include<stdlib.h>
04: #include<math.h>
05: 
06: int main(int argc, char **argv){
07: 
08:   // gioco un po' con la memoria (per "sporcarla") ovvero alloco array di 1000 double e ci metto dentro
09:   // valori a caso
10:   double *tmp = malloc(1000 * sizeof(double));
11:   for(int i = 0; i < 1000; ++i)
12:     tmp[i] = sqrt( rand() );
13: 
14:   // dopo aver "sporcato" la memoria la libero
15:   free(tmp);
16: 
17: 
18:   // a seguire il codice che testa la differenza tra malloc() e calloc()
19:   int n;
20: 
21:   printf("Dimensione dell'array da allocare? ");
22:   scanf("%d", &n);
23: 
24:   // alloco array con malloc()
25:   int *myarr = malloc(n * sizeof(int));
26: 
27:   // viene inizializzato? Vediamolo provando a stamparne il contenuto
28:   printf("Contenuto array allocato con malloc(): ");
29:   for(int i = 0; i < n; ++i)
30:     printf("%d ", myarr[i]);
31:   printf("\n");
32: 
33: 
34:   // ora liberiamo quell'area di memoria
35:   free(myarr);
36: 
37:   // riallochiamone un'altra ma stavolta usiamo calloc(), notare che riutilizzo myarr
38:   myarr = calloc(n, sizeof(int));
39: 
40:   // e ora e' stato inizializzato? Vediamolo provando a stamparne il contenuto
41:   printf("Contenuto array allocato con calloc(): ");
42:   for(int i = 0; i < n; ++i)
43:     printf("%d ", myarr[i]);
44:   printf("\n");
45: 
46: 
47:   return 0;
48: }
49: 
50: 


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