开发者

Dynamically allocating a float matrix?

I开发者_开发技巧s there any way how to malloc() a 2D matrix in C? I have successfully tried malloc()ing a 1D field, but in matrix I am getting errors.


float *mat2d = malloc( rows * cols * sizeof( float ));

to access a value from the matrix use this adressing scheme:

float val = mat2d[ x + y * cols ];


If the size of the array isn't known at compile time you have to use a loop to allocate memory for each row.

Here's some sample code I found:

double** allocate2D(int nrows, int ncols) {
  int i;
  double **dat2;
  /*  allocate array of pointers  */
  dat2 = malloc( nrows*sizeof(double*));

  if(dat2==NULL) {
    printf("\nError allocating memory\n");
    exit(1);
  }
  /*  allocate each row  */
  for(i = 0; i < nrows; i++) {
    dat2[i] = malloc( ncols*sizeof(double));
  }
  if(dat2[i-1]==NULL) {
    printf("\nError allocating memory\n");
    exit(1);
  }
  return dat2;
}

From here

Be sure to change the data type from double to whatever you need.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜