#include <string>
#include <iostream>
#include <iomanip>
using namespace std;
struct Test
{
Test() { cout << "Выделяем кучу памяти\n"; }
~Test() { cout << "Освобождаем кучу памяти\n"; }
virtual void foo()
{
new ( this ) Test;
}
virtual void bar()
{
new ( this ) Test;
foo();
}
};
int main()
{
Test test;
test.bar();
return 0;
}
I2luY2x1ZGUgPHN0cmluZz4KI2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8aW9tYW5pcD4KCnVzaW5nIG5hbWVzcGFjZSBzdGQ7CgpzdHJ1Y3QgVGVzdAp7CiAgICBUZXN0KCkgeyBjb3V0IDw8ICLQktGL0LTQtdC70Y/QtdC8INC60YPRh9GDINC/0LDQvNGP0YLQuFxuIjsgfQogICAgflRlc3QoKSB7IGNvdXQgPDwgItCe0YHQstC+0LHQvtC20LTQsNC10Lwg0LrRg9GH0YMg0L/QsNC80Y/RgtC4XG4iOyB9CiAgICB2aXJ0dWFsIHZvaWQgZm9vKCkKICAgIHsKICAgICAgICBuZXcgKCB0aGlzICkgVGVzdDsKICAgIH0KCiAgICB2aXJ0dWFsIHZvaWQgYmFyKCkKICAgIHsKICAgICAgICBuZXcgKCB0aGlzICkgVGVzdDsKICAgICAgICBmb28oKTsKICAgIH0KfTsKCmludCBtYWluKCkKewogICAgVGVzdCB0ZXN0OwogICAgdGVzdC5iYXIoKTsKICAgIHJldHVybiAwOwp9Cgo=