gpt4 book ai didi

有人能找出错误吗?纯 C 重新分配

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

我有这个代码:

int main() {
int i=0, n=0;
char sep=NULL;
double **aero=(double**)malloc(sizeof(double*));
*aero=(double*)malloc(2*sizeof(double));
printf("Zadejte souradnice:\n");
while (1) {
aero=(double**)realloc(aero,(n+1)*sizeof(double*));
for (i=0; i<n+1; i++) {
aero[i]=(double*)realloc(aero[i],2*sizeof(double));
}
if ((scanf("[%lf,%lf]%c",&aero[n][0],&aero[n][1],&sep))==3 && (sep=='\n' || sep==' ')) {
n++;
continue;
} else if (!feof(stdin)) {
printf("Nespravny vstup.\n");
freeArray2D(aero,n);
return 0;
}
break;
}
}

它工作正常,但我只能扫描 19 次坐标(格式:[x,y])。然后它显示段错误(核心已转储)。我使用 Linux 编译器 gcc -Wall -pedantic main.c -lm 我不知道问题出在哪里。感谢您的帮助。

最佳答案

您永远不会将新的 malloced 缓冲区分配给 aero[1],而是将其中的垃圾传递给 realloc。也许您希望 aerorealloc 将内存初始化为零?

关于有人能找出错误吗?纯 C 重新分配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20174771/

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