msvs2012 で大きなプログラムをデバッグしようとする_BLOCK_TYPE_IS_VALID(pHead->nBlockUse)
と、デバッグ モードで実行すると常に終了します。リリース モードおよび g++ (-O0 フラグも使用) では、エラーは発生しません。このトピックに関するいくつかの記事 (クラスとデストラクタのエラー メッセージとポインタ) も読みましたが、コードの問題点が見つかりません。以下に最小限の(機能しない)例を示します。何が間違っているかを指摘し、それを解決する方法を示すことができますか? (標準コンテナーを使用することは、私にとっては解決策ではありません。)
#include <iostream>
using namespace std;
class block_data {
public:
int size;
double * data;
block_data() {};
block_data(int s)
{
size = s;
data = new double [size];
for (int i=0; i<size; ++i)
data[i] = i;
}
~block_data() {delete[] data;};
block_data operator+(const block_data& toadd)
{
block_data C(toadd.size);
for (int i=0; i<size; ++i)
C.data[i] = data[i] + toadd.data[i];
return C;
}
block_data& operator=(const block_data& copy)
{
for (int i=0; i<size; ++i)
data[i] += copy.data[i];
return *this;
}
};
int main()
{
block_data sum(10);
for (int seed = 0; seed < 10; ++seed)
{
block_data d(10);
sum = sum + d;
}
return 0;
}