动态分配浮点矩阵?

时间:2011-04-06 14:25:26

标签: c dynamic-memory-allocation

有什么办法如何在C中malloc()一个二维矩阵?我已成功尝试malloc() 1D字段,但在矩阵中我遇到错误。

2 个答案:

答案 0 :(得分:2)

  

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

从矩阵中访问值使用此地址方案:

  

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

答案 1 :(得分:1)

如果在编译时不知道数组的大小,则必须使用循环为每行分配内存。

以下是我找到的一些示例代码:

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;
}

来自here

请务必将数据类型从double更改为您需要的任何内容。