开发者

C Allocating Two Dimensional Arrays

I am trying to allocate a 2D dimension array of File Descriptors... So I would need something like this fd[0][0] fd[0][1]

I have coded so far:

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));
    }
  }
开发者_开发百科

How can I set it all too zeros right now I keep getting a seg fault when I try to assign a value...

Thanks


So, first, you're going to have to pass in a pointer to myPipes:

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

Then it's easy:

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

And of course, you'd call it with:

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


short answer: change your innermost malloc to a calloc.

long answer provided by the c faq: http://c-faq.com/~scs/cclass/int/sx9b.html

What you need to understand is that C doesn't really have a way to allocate a true multidimensional array. Instead, you just have a pointer to an array of pointers. Treat your data structure as such and you will be fine.

0

上一篇:

下一篇:

精彩评论

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

最新问答

问答排行榜