C分配二维数组

时间:2010-04-06 23:45:44

标签: c arrays unix

我正在尝试分配文件描述符的2D维数组......所以我需要这样的东西     FD [0] [0]     FD [0] [1]

到目前为止我已编码:

void allocateMemory(int row, int col, int ***myPipes){
    int i = 0,i2 = 0;
    myPipes = (int**)malloc(row * sizeof(int*));
    for(i = 0; i < row;i++){
       myPipes[i] = (int*)malloc(col * sizeof(int));
    }
  }

我怎样才能将它设置为零现在我在尝试分配值时不断出现seg错误...

由于

2 个答案:

答案 0 :(得分:3)

所以,首先,你必须传递一个指向myPipes的指针:

void allocateMemory(int rows, int cols, int ***myPipes) { ... }

然后很容易:

*myPipes = malloc(sizeof(int) * rows * cols);

当然,你打电话给:

int **somePipes;
allocateMemory(rows, cols, &somePipes);

答案 1 :(得分:2)

简短回答:将最里面的malloc更改为calloc。

c faq提供的长答案: http://c-faq.com/~scs/cclass/int/sx9b.html

您需要了解的是,C实际上没有办法分配真正的多维数组。相反,你只需要一个指针数组的指针。如此对待你的数据结构,你会没事的。