gpt4 book ai didi

c - 数组重新分配失败

转载 作者:太空宇宙 更新时间:2023-11-04 04:26:16 25 4
gpt4 key购买 nike

我想读一些单词,直到出现“完成”这个词。这些词被放入一个动态分配的矩阵中,该矩阵在接收到的每个输入时进行修改。 问题是,在 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;
}

最佳答案

我编译了你的代码并且它有点工作。我遇到的问题是输入“done”后程序会崩溃。这可以通过更正代码的最后一部分来解决

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

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

关于c - 数组重新分配失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41086440/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com