One way to allocate dynamically a by
array (of doubles,
say) is to first allocate space for
pointers to double and
then allocate
doubles for each of these:
double **myArray; int i; myArray = (double **) malloc(m*sizeof(double *)); assert(myArray); for (i=0;i<m;i++) { myArray[i] = (double *) malloc(n*sizeof(double)); assert(myArray[i]); } DoSomethingWith(myArray); for (i=0;i<m;i++) free((void *) myArray[i]); free((void *) myArray);
This naturally can be extended to any number of dimensions. Perhaps a
better way is to simply allocate a single by
block of memory
of the appropriate storage type and access the elements using
row-column formulae like
, where
runs from 0 to
and
runs from 0 to
.