Ошибка в компиляторе Visual Studio 2015?
От: vpk Украина http://www.codyssey.com
Дата: 04.03.16 10:21
Оценка: 18 (5) :))) :))
Следующий код элементарно компилится в Visual Studio 2010 и 2012.
В 2015-компилятор отжирает памяти сколько может, потом валится с ошибкой.
Если использовать 64битный компилятор, то справляется использовав больше 20гиг оперативы.
Чем больше уровней вложения тем больше памяти требуетсяб причем (как мне кажется) зависимость нелинейная.
Как-то обойти можно?

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;
}
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.