当我尝试使用 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;
}