/* creates m x n x p array */ B = (double ***)malloc(m*sizeof(double **)); if ( B = NULL ) return NULL; B[0] = (double **)malloc(m*n*sizeof(double *)); if ( B[0] == NULL ) { free(B); return NULL; } B[0][0] = (double *)malloc(m*n*p*sizeof(double)); if ( B[0][0] == NULL ) { free (B[0]); free(B); return NULL; } for ( i = 0; i < m; i++ ) { B[i] = B[0] + i*n; for ( j = 0; j < n; j++ ) B[i][j] = B[i][0] + j*p; }