浮动值突然变得巨大

时间:2011-01-29 11:33:46

标签: c floating-point

我宁愿不转储代码,但要解释我的问题。经过几个小时的调试后,我设法理解,在我的代码中的某个时刻,未明确修改的浮点值变为巨大(超过1e15)。我在我的程序中使用了大量内存(一个包含800多个单词的字符串数组),除此之外,我不知道是什么原因造成的。

如果有人对此有任何想法,请分享。否则,我会张贴一个 代码很快。

修改 以下是代码:http://pastebin.com/vgiZweNq。问题出在next_generation()函数中,sumfit变量在循环中随机出现。{/ p>

另外,我使用-fno-stack-limit-fstack-check在linux上编译了这个,以避免堆栈溢出。

编辑2: 我已经将程序更改为使用动态分配的链表,以进一步避免堆栈溢出。尽管如此,sumfit在随机点变为Floatzilla,通常很早就开始了。

干杯!

3 个答案:

答案 0 :(得分:2)

由于变量显然是从意外点修改的,因此您可能需要检查一些可能性:

  • 是从不同的线程还是从中断/事件处理程序修改?如果是,那么访问是否正确同步以防止数据竞争?
  • 您是否正在进行可能有错误的指针运算并导致在预期缓冲区之外进行访问?
  • 您是否在不同大小的类型之间投射指针?
  • 特别是如果您正在使用嵌入式设备:可能内存已满,您的堆栈与堆重叠,或全局变量。

有关此平台的更多信息会有所帮助。

答案 1 :(得分:1)

你在chrom数组上使用了strcpy,但是我看不到它们在哪里被null终止。

可能我只是错过了它。

答案 2 :(得分:0)

你有一个巨大的字符串数组。我估计你可能会结束它。跟踪进入该阵列的数据大小。