Выделение памяти для трехмерного массива char вызывает ошибку сегментации - PullRequest
1 голос
/ 16 декабря 2011

В ответ на предыдущий вопрос я столкнулся с некоторыми проблемами, связанными с выделением памяти для трехмерного массива.

Я работаю над проектом, в котором нам нужно поработать над текстом. Для этого нам нужно разбить текст на более мелкие разделы и обработать текст дословно. Чтобы сохранить эти небольшие фрагменты текста, у нас есть 3D-массив, список разделов, каждый из которых содержит список слов в разделе.

Но я получаю ошибку сегментации, когда пытаюсь выделить память для отдельных слов, используя malloc().

localText->list[i][n] = malloc(100 * sizeof(char));

Вот весь код.

typedef struct {
   char name[100];
   char  ***list;
}text;

int main(){
   int i = 0, n, z,wordCount, sections;
   FILE *file;
   text *localText;

   openFile(&file, "test.txt");
   wordCount = countWords(file);

   sections = (wordCount / 50) + 1;

   localText = malloc(sizeof(text));
   localText->list = malloc(sections * sizeof(char **));

   for(i = 0; i < sections; i++)
      localText->list[i] = malloc(50 * sizeof(char *));
      for(n = 0; n < 50; n++)
         localText->list[i][n] = malloc(100 * sizeof(char));

   readFileContent(file, localText->list, 50);

   freeText(localText);

   return 1;
}

1 Ответ

6 голосов
/ 16 декабря 2011

Вам не хватает скобок:

for(i = 0; i < sections; i++) {
// ...
}
...