CString
クラスに動的配列があり、クラスnew
のコンストラクターで演算子を使用してそれを作成したので、メモリを解放するためにデストラクタに1行書きました。エラーは発生しませんが、実行時にブレークポイントが発生します。エラーは次のとおりです。WindowsがGeneticAlgorithm.exeでブレークポイントをトリガーしました。
これは、ヒープの破損が原因である可能性があります。これは、GeneticAlgorithm.exeまたはロードされたDLLのいずれかにバグがあることを示しています。
これは、GeneticAlgorithm.exeにフォーカスがあるときにユーザーがF12キーを押したことが原因である可能性もあります。
出力ウィンドウには、より多くの診断情報が表示される場合があります。
コードは次のとおりです。
//in constructor
StringFormat = new CString[Info.VariablesCount + 1];
for (int i=0;i<=Info.VariablesCount;i++)
StringFormat[i] = "%2.3f";`
// in destructor
free(StringFormat);
これはクラスのプライベートメンバーであることに注意してくださいStringFormat*
。このクラスには他にもいくつかの動的配列がありますが、freeメソッドを使用して簡単に解放できます。この問題はCString
動的配列だけにあるので、何が欠けていますか?