【发布时间】:2011-01-29 11:33:45
【问题描述】:
我宁愿不转储代码,而是解释我的问题。经过数小时的调试,我终于明白,在我的代码中,未显式修改的浮点值会变成巨大的(超过 1e15)。我的程序确实使用了大量内存(一个包含 800 多个单词的字符串数组),但除此之外,我不知道是什么原因造成的。
如果有人对此有任何想法,请分享。否则,我会发布一个pastebin 代码很快。
编辑:
这是代码:http://pastebin.com/vgiZweNq。问题在于next_generation() 函数,其中sumfit 变量在循环中随机出现。
另外,我在 linux 上使用 -fno-stack-limit 和 -fstack-check 编译了这个,以避免堆栈溢出。
编辑 2:
我已将程序更改为使用动态分配的链表,以进一步避免堆栈溢出。尽管如此,sumfit 还是会随机更改为 Floatzilla,通常是在很早的时候。
干杯!
【问题讨论】:
-
如果你没有明确地接触这个变量,我们最好的猜测是一些内存管理错误。贴出代码,今天水晶球朦胧。
-
请分享代码。尝试将其归结为
float感染抱炎的部分。 -
您的错误是由于某个地方的错误引起的,很可能是缓冲区溢出。通过 Valgrind 运行您的代码。
-
使用数据断点让调试器在被修改时中断。
-
@Hans - 同意,数据断点绝对是追踪这类事情的最佳方式。
标签: c floating-point