C Выделение двумерных массивов - PullRequest
3 голосов
/ 07 апреля 2010

Я пытаюсь выделить массив двумерных файловых дескрипторов ... Итак, мне нужно что-то вроде этого 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));
    }
  }

Как мне теперь установить все нули прямо сейчас У меня постоянно возникает ошибка сегмента, когда я пытаюсь присвоить значение ...

Спасибо

Ответы [ 2 ]

3 голосов
/ 07 апреля 2010

Итак, сначала вам нужно будет передать указатель на myPipes:

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

Тогда легко:

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

И, конечно, вы бы назвали это с:

int **somePipes;
allocateMemory(rows, cols, &somePipes);
2 голосов
/ 07 апреля 2010

краткий ответ: измените свой внутренний malloc на calloc.

длинный ответ, предоставленный c faq: http://c -faq.com / ~ SCS / cclass / INT / sx9b.html

Что вам нужно понять, так это то, что в C нет способа выделить истинный многомерный массив. Вместо этого у вас просто есть указатель на массив указателей. Относитесь к своей структуре данных как к таковой, и у вас все будет хорошо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...