C语言 将内存分配给三维字符数组导致分段错误



作为前面一个问题的旋转,我遇到了一些关于为三维数组分配内存的问题。

我正在做一个项目,我们需要在一个文本上做一些工作。要做到这一点,我们需要将文本分成更小的部分,并逐字处理文本。为了保存这些较小的文本片段,我们使用了一个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;
}

你少了一些大括号:

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

最新更新