#include <stdio.h> #include <stdlib.h> int main() { int i,j,n,m; int **a; n=5; m=7; a= (int**) calloc (n, sizeof(int*)); if (a == NULL) { printf("E' finita la memoria"); exit(-1); } for(i=0; i< n; i++){ a[i]= (int*) calloc (m, sizeof(int)); if (a[i] == NULL) { printf("E' finita la memoria"); // disalloco tutto cio' che ho allocato fino ad ora: a[0]...a[i-1] for (j=0; j<i; i++) free(a[j]); free(a); // disalloco anche a! exit(-1); } } // uso la matrice for (i=0; i<n; i++) free(a[i]); free(a); getchar(); return 0; }