c - 程序在停止工作之前可以执行的最大计算次数是否存在?

标签 c codeblocks

对于这个问题的一般性质,我深表歉意,但我想不出一个好的表达方式...简而言之,我是一个初学者,编写了一个程序(用 C 语言,使用 CodeBlocks-EP)执行大量的计算(为了简单起见,我用一个无意义的循环替换了真正的(非常有用的)代码,它也有大量的计算!)。

    int x, i;

    for (i=0; i<9999999999999999; i++){
        x=x+1;
        x=x-1;          //real code is much more useful but spans 3000 lines!
    }
    printf("x is %i", x);     //useful output

正如我所说,它工作正常,并提供有用的输出。然而,最近,我试图让它在虚拟一年的每一天都运行一次,而不是只运行一天,如下所示:

    int x, i, day;

    for (day=0; day<365; day++){
        for (i=0; i<9999999999999999; i++){
            x=x+1;
            x=x-1;         //real code is much more useful but spans 3000 lines!
        }
    }
    printf("x is %i", x);     //useful output

在获得有用的输出之前,我收到了以下消息:

My_program.exe 已停止工作。一个问题导致程序停止正常工作。 Windows 将关闭该程序并在有可用解决方案时通知您。进程终止,状态为 -1073741510(24 秒)。

在进一步检查时,它在第 60 天左右停止工作。但是(这是奇怪的部分...),如果您选择更短的时间段,该程序会工作,例如第 0-60 天,或第 30-71 天,或第 60-101 天(因此它不会因为第 61 天的编程问题而中断)。

如果我尝试做超过 60 天(甚至是 0-70 天),它会在大约 60 天后中断。除了由于“计算太多”而崩溃之外,我想不出有什么问题......但我从未听说过这个问题。我是一个新手,所以任何建议都将不胜感激!

我明白没有实际代码没有帮助,但在 3000 行时,用更简单的代码替换它似乎是明智的!但我可以确认它适用于一年中的每一天,当作为单独的单独的日子运行时......只是不是作为一个 block !如果我可以通过提供任何其他信息来提供帮助,请告诉我。

非常感谢,

马特

更新(2013 年 12 月 26 日 23:21):非常感谢所有的回复 - 原来是内存泄漏,我错过了一行代码重置其中一个计数器,它反过来试图然后做一个巨大的矩阵……很抱歉我是个菜鸟,不知道如何诊断它,但我觉得我学到了一些东西;感谢您的帮助!

最佳答案

Is there a maximum number of calculations that can be performed by a program before it stops working?

没有。您的程序中可能存在内存泄漏或数字溢出,并且仅在运行 60 天后才会出现。

关于c - 程序在停止工作之前可以执行的最大计算次数是否存在?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20789374/

相关文章:

compiler-errors - fprintf 未在此范围内声明

c - printf 编译时显示错误

c++ - Qt 的 MinGW、Code::Blocks 的 MinGW 和 MinGW 本身有什么区别吗?

c++ - 代码::阻止调试器失败

c - gcc 的所有这些功能是什么? (-l -a -等)

c - 你喜欢 "if (var)"还是 "if (var != 0)"?

C:仅打印 2 个数组中的不常见元素

切换上下文时cmd中光标跳跃

c - ) 堆栈程序中的预期错误

C++ Boost:对 boost::system::generic_category() 的 undefined reference