我想读一些单词,直到"完成"介绍。这些单词被放入动态分配的矩阵中,该矩阵在接收到的每个输入处被修改。 问题是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;
}
答案 0 :(得分:0)
我编译了你的代码,它有点工作。我遇到的问题是&#34;完成&#34;被输入的程序会崩溃。这可以通过从
更正代码的最后部分来解决--app-header-background-rear-layer
到
for (i = 0;i < dim;i++)
free(words[i]);