June 13, 2011
C Create Dynamic 2D array
In my last post, I create code to create 2D array in C++. Now, I try to create dynamic 2D array in C. Algorithm to create dynamic 2D array in C or C++ is same. This is a code to create dynamic 2D array in C :
float **arrayf_create(int row, int col) { int i; float **mat=NULL; /* allocate pointers to rows */ mat = (float **) malloc((row*sizeof(float*))); if (!mat) { fprintf(stderr, "matrixf_create : error allocation row"); exit(0); } /* allocate rows and set pointers to them */ mat[0]=(float*) malloc((row*col)*sizeof(float)); if (!mat[0]) { fprintf(stderr, "matrixf_create : error allocation column"); exit(0); } for(i=1; i<row; i++) mat[i]=mat[i-1] + col; /* return pointer to array of pointers to rows */ return mat; }
After you create dynamic 2D array in C, you can use this code to free 2D array in C :
void free2Array_float(float **mat) { free (mat[0]); free (mat); }