我有一段简单的代码,它从 FORTRAN 生成的 REAL 数组中提取一个浮点数,然后将其插入到流中进行记录。虽然这适用于前 30 个案例,但在 31 日它会因“浮点无效操作”而崩溃。
代码是:
int FunctionDeclaration(float* mrSwap)
{
...
float swap_float;
stringstream message_stream;
...
swap_float = *(mrSwap+30-1);
...
message_stream.clear();
message_stream << 30 << "\t" << swap_float << "\tblah blah blah \t";
调试时,崩溃前实例的 swap_float 的值(在上面的最后一行)是 1711696.3 - 除了比到目前为止的大多数值大得多之外,它没有什么特别的地方。
我也尝试用 cerr 替换 message_stream,并遇到了同样的问题。迄今为止,我一直认为 cerr 几乎是坚不可摧的——一个简单的浮子怎么能摧毁它?
编辑:
感谢评论:我已经添加了mrSwap的声明。mrSwap 大约有 200 长,所以我离结束还有很长的路要走。它在我的控制之外填充,并且可能不会填充单个条目 - 但据我所知,这只是意味着 swap_float 将设置为随机浮点数?