私は、FORTRANで生成されたREAL配列からfloatを抽出し、それをログに記録するためにストリームに挿入する単純なコードを持っています。これは最初の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です。これは、この時点までのほとんどの値よりもはるかに大きいことを除けば、特に特別なことはありません。
また、message_streamをcerrに置き換えてみましたが、同じ問題が発生しました。私はこれまで、cerrはほとんど破壊できないと信じていましたが、単純なフロートでどのように破壊できるのでしょうか。
編集:
コメントありがとうございます:mrSwapの宣言を追加しました。mrSwapの長さは約200なので、私は終わりから遠く離れています。それは私のコントロールの外に入力され、個々のエントリは入力されないかもしれません-しかし私の理解の限りでは、これはswap_floatがランダムなfloatに設定されることを意味しますか?