c - 将内存分配给 3 维字符数组会导致段错误

标签 c multidimensional-array char malloc

作为先前问题的衍生,我遇到了一些有关将内存分配给 3 维数组的问题。

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

关于c - 将内存分配给 3 维字符数组会导致段错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8536014/

相关文章:

c - 重新映射堆栈成功,但随后引发 SEGV

java - 有没有更好/更小的方法来比较矩阵的值

c++ - 在 C++ 中处理未终止的 char 数组有多容易?

c - scanf 不等待输入返回 0

c - OpenMP:错误: ‘w.13’ 未在封闭并行中指定

Java:ArrayList^2 到 int[][]

c++ - 计算char数组C++中的单词数

c - unix 命令结果到变量 - char*

c - Visual Studio Code 属性控制台不允许错误

php - 从二维数组 PHP 中删除某些索引