gpt4 book ai didi

C 中的疯狂错误,未定义的行为?

转载 作者:行者123 更新时间:2023-11-30 21:34:59 24 4
gpt4 key购买 nike

我正在开发一个大型 C 代码,自然它会在一开始就崩溃。我找到了错误的根源,它来自这里:

printf("%s %d", "\nki2 : ", ki2);
puts("\nline # 1704");
printf("%s %d", "\nki2 : ", ki2);

在终端中返回:

ki2 :  237
line # 1704

然后崩溃,退出值为 -1。第一次访问ki2之间没有发生任何事情和第二个,那么为什么程序在第二次调用ki2时崩溃了?而不是第一个?!

顺便说一句,这些行是在循环中执行的,并且在崩溃发生之前已成功执行了多次。

如果打印行被替换为printf("\nki2 : %i", ki2);,则执行相同的操作.

ki2 是一个整数。 Is 的值来自存储在动态数组中的另一个 int。

最佳答案

也许最后一行卡在输出缓冲区中。尝试一下

printf("%s %d", "\nki2 : ", ki2);
puts("\nline # 1704");
printf("%s %d", "\nki2 : ", ki2);
fflush(stdout);

*程序更常见的是用“\n”终止行而不是用它开始行。您也可以尝试

printf("%s %d\n", "ki2 : ", ki2);
puts("line # 1704"); // puts adds '\n' automatically
printf("%s %d\n", "ki2 : ", ki2);

关于C 中的疯狂错误,未定义的行为?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53394524/

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