我正在尝试分配文件描述符的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错误...
由于
答案 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实际上没有办法分配真正的多维数组。相反,你只需要一个指针数组的指针。如此对待你的数据结构,你会没事的。