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
mandate un messaggio di posta elettronica a bertoƶƶi@ce.unipr.it