0
以下代码会导致Visual Studio 2015致命错误C1060:编译器超出了堆空间。 如果我使用64位版本的编译器它为此示例吃了超过25G的ram。 Visual Studio 2012和2010工作正常。这是一个编译器错误?Visual Studio 2015编译器错误C1060
class Test
{
public:
Test() :
m_val1(0),
m_val2(0)
{
}
Test(Test *val1) :
m_val1(val1),
m_val2(0)
{
}
Test(Test *val1, Test *val2) :
m_val1(val1),
m_val2(val2)
{
}
~Test()
{
if (m_val1)
delete m_val1;
if (m_val2)
delete m_val2;
}
private:
Test* m_val1;
Test* m_val2;
};
int main()
{
Test t(new Test(new Test(new Test(new Test(new Test(new Test(new Test(new Test(new Test(
new Test(new Test(new Test),
new Test(new Test(new Test(new Test(new Test(new Test(),
new Test()),
new Test(new Test(),
new Test(new Test(new Test(new Test(new Test(new Test(new Test(new Test(new Test(new Test(new Test(),
new Test())))))))))))
)))))))))))))));
return 0;
}
这可能是一个编译器问题,但是你的代码是非常不寻常的,没有人会为真正的项目编写代码。 –
顺便说一句,删除空指针是安全的;测试是多余的。 –
如果有人和我一起工作写这样的代码,它不会是我在质疑的编译器;-) –