gpt4 book ai didi

c - C 中的无限循环

转载 作者:行者123 更新时间:2023-11-30 21:20:38 25 4
gpt4 key购买 nike

我很确定这段代码给了我一个无限循环(我已经离开 if 很长一段时间了,什么也没有发生),我已经盯着这个代码两天了,但我不知道不知道为什么它一直循环。有什么想法吗?

    int r = 0;
int H = 0;
int g = 0;

while (r < (3265920)) {

while (g < 79338) {
//printf("middle");
if (!strcmp(arr1[g], Arr2[r])) {

strcpy(out[H], arr1[g]);
H++;
}
g++;
}

r++;
g = 0;
}

Q=0;
while (Q < 79338) {


printf("%d: %s\n",Q, Ans[Q]);
Q++;

}

所有数组在主数组之外都有正确的内存分配。

static char arr2[NINE_FACT * 9][10];
char Ans[79339][10];
char arr1[79339][45];

最佳答案

您的内部循环运行了 259111560960 次,这可能需要很长时间。 H 的用途是什么?在 32 位机器上 H 可能会导致错误,因为它会溢出。请注意,您所在机器的字长很重要,即此代码在您的机器上产生什么?

printf("sizeof(int) == %zu\n", sizeof(int));

我很惊讶它能正常运行。

out[H]; //This array could be huge.

如果这是一个普通数组并且您使用的是 64 位计算机,我预计会出现段错误,或者有时这可能需要一些时间进行核心转储。

假设 32 位机器和单个字符作为字符串 out[H] 将需要 2^31 字节 * 2,因为空终止符,即刚刚超过 4 Gb 的 RAM?

关于c - C 中的无限循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36207537/

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