gpt4 book ai didi

c - 在 C 中打印二维指针数组后不断崩溃

转载 作者:行者123 更新时间:2023-11-30 15:52:43 25 4
gpt4 key购买 nike

在下面的代码中,我在最后一个 for 循环后一直崩溃。我无法通过使用 Netbeans 进行调试来弄清楚。for 循环可以工作,并打印我想要打印的内容,但随后程序崩溃而不是成功终止。你能帮忙吗(我了解 gets,我很快就会尝试 fgets)?

代码:

#include<stdio.h>
#include<stdlib.h>
#include<string.h>


int main()
{
char *str,**string,buffer[50],temp[2];
int i,j,size,counter;
size=1;

string=(char**) calloc(size,sizeof(char*));
for (i=0; i<size; i++) string[i]=(char*)malloc(50*sizeof(char));

printf("\nGimme strings, terminate input with x");
i=0;
gets(string[i]);
temp[0]=120;//x
temp[1]='\0';
size=2;
while(strcmp(string[i],temp)!=0)
{
string=realloc(string,size*sizeof(char**));
i++;
string[i]=malloc(50*sizeof(char));
gets(string[i]);
size++;
counter++;
}
for(i=0; i<=counter; i++) printf("\n%s",string[i]);
return 0;
}

最佳答案

counterwhile 循环之前未初始化为 0

并使用

string=realloc(string,size*sizeof(char*));

而不是

string=realloc(string,size*sizeof(char**));

您能否详细描述一下您打算做什么,因为在您的代码中,您正在分配指针数组,然后为数组中的每个指针分配内存,然后使用 realloc(string 删除几乎整个数组,2*sizeof(char**)); 这将删除几乎整个数组并仅保留前 2 个指针。因此,您将丢失指向已分配内存的指针,因此您无法再释放它们:

关于c - 在 C 中打印二维指针数组后不断崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14237464/

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