我正在开发一个大型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。
答案 0 :(得分:2)
也许最后一行卡在了输出缓冲区中。试试
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);