重新分配数组失败

时间:2016-12-11 12:59:19

标签: c dynamic-allocation

我想读一些单词,直到"完成"介绍。这些单词被放入动态分配的矩阵中,该矩阵在接收到的每个输入处被修改。   问题是3个单词之后程序崩溃并且消息带有"内存分配失败"我把它作为警告出现了。   我的重新分配有什么问题?

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX_DIM 100

    int main()
        {
          char **words,buff[100];
          int i,dim = 0;
          words = (char**)calloc(dim,dim*sizeof(char*));
          while(strcmp(buff,"done"))
           {
             printf("the new word : ");
             scanf("%100s", buff);
             if(strcmp(buff,"done"))
              {
                dim++;
                words = (char**)realloc(words,dim*sizeof(char*));
                if(words == NULL)
                 {
                   printf("Memory allocation failed !\n");
                   exit(0);
                 }
                words[dim] = (char*)calloc(MAX_DIM,sizeof(char));
                strcpy(words[dim],buff);
              }
           }
          printf("%d", dim);
          for (i = 0;i < dim;i++)
            free(words[i]);
          free(words);
          return 0;
        }

1 个答案:

答案 0 :(得分:0)

我编译了你的代码,它有点工作。我遇到的问题是&#34;完成&#34;被输入的程序会崩溃。这可以通过从

更正代码的最后部分来解决
--app-header-background-rear-layer

for (i = 0;i < dim;i++)
    free(words[i]);