主に行列の乗算、加算などを実行する C++ のプログラムがあります。
問題は、計算が約 300 万回実行されると EXC_BAD_ACCESS が発生することです。
問題が数百万回、数時間実行された場合に発生する可能性のある問題はありますか?
プログラムの詳細:
このプログラムは、さまざまな範囲の値を単純に計算するだけなので、同時に 6 つのスレッドで実行されます。スレッド間のリソース共有はありません。
次の理由から、プログラムに明らかな問題はないようです。
- メモリ リークはなく、Instruments を使用してこれを確認しました。プログラムのメモリ サイズは安定しています。
- プログラムは各スレッドで少なくとも 200 万回問題なく実行できますが、EXC_BAD_ACCESS 例外が何らかのスレッドで発生することはほぼ保証されています。(例外は、プログラムの 2 回の試行 (2/2) で発生します)
行列の乗算について:
行列のサイズが約 2*2 に 2*1000 を掛けたものになる場合があります。
行列の要素は、カスタムの複素数クラスです。
要素の値は rand() によってランダムに生成され、float に変換されます。
構造は次のようになります。
class Complex
{
private:
float _real, _imag;
public:
// getters, setters and overloaded operators
};
class Matrix
{
private:
Complex **_values;
int _row,_col;
public:
getters, setters and overloaded operators
};
どうもありがとうございました!
クラッシュの考えられる理由は大歓迎です!