#include <iostream>
struct NonTrivial
{
int i = 5;
~NonTrivial() { std::cout << "Destructor" << std::endl; }
};
struct Trivial
{
int i = 5;
};
int main()
{
NonTrivial *p = new NonTrivial[29];
std::cout << *((size_t *) p - 1) << std::endl;
std::cout << *((size_t *) p - 2) << std::endl;
std::cout << *((size_t *) p - 3) << std::endl << std::endl;
Trivial *t = new Trivial[29];
std::cout << *((size_t *) t - 1) << std::endl;
std::cout << *((size_t *) t - 2) << std::endl;
std::cout << *((size_t *) t - 3) << std::endl << std::endl;
int *q = new int[29];
std::cout << *((size_t *) q - 1) << std::endl;
std::cout << *((size_t *) q - 2) << std::endl;
std::cout << *((size_t *) q - 3) << std::endl << std::endl;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgoKc3RydWN0IE5vblRyaXZpYWwKewogIGludCBpID0gNTsKICB+Tm9uVHJpdmlhbCgpIHsgc3RkOjpjb3V0IDw8ICJEZXN0cnVjdG9yIiA8PCBzdGQ6OmVuZGw7IH0KfTsKCnN0cnVjdCBUcml2aWFsCnsKICBpbnQgaSA9IDU7Cn07CgppbnQgbWFpbigpCnsKICBOb25Ucml2aWFsICpwID0gbmV3IE5vblRyaXZpYWxbMjldOwogIHN0ZDo6Y291dCA8PCAqKChzaXplX3QgKikgcCAtIDEpIDw8IHN0ZDo6ZW5kbDsKICBzdGQ6OmNvdXQgPDwgKigoc2l6ZV90ICopIHAgLSAyKSA8PCBzdGQ6OmVuZGw7CiAgc3RkOjpjb3V0IDw8ICooKHNpemVfdCAqKSBwIC0gMykgPDwgc3RkOjplbmRsIDw8IHN0ZDo6ZW5kbDsKICAKICBUcml2aWFsICp0ID0gbmV3IFRyaXZpYWxbMjldOwogIHN0ZDo6Y291dCA8PCAqKChzaXplX3QgKikgdCAtIDEpIDw8IHN0ZDo6ZW5kbDsKICBzdGQ6OmNvdXQgPDwgKigoc2l6ZV90ICopIHQgLSAyKSA8PCBzdGQ6OmVuZGw7CiAgc3RkOjpjb3V0IDw8ICooKHNpemVfdCAqKSB0IC0gMykgPDwgc3RkOjplbmRsIDw8IHN0ZDo6ZW5kbDsKICAKICBpbnQgKnEgPSBuZXcgaW50WzI5XTsKICBzdGQ6OmNvdXQgPDwgKigoc2l6ZV90ICopIHEgLSAxKSA8PCBzdGQ6OmVuZGw7CiAgc3RkOjpjb3V0IDw8ICooKHNpemVfdCAqKSBxIC0gMikgPDwgc3RkOjplbmRsOwogIHN0ZDo6Y291dCA8PCAqKChzaXplX3QgKikgcSAtIDMpIDw8IHN0ZDo6ZW5kbCA8PCBzdGQ6OmVuZGw7Cn0K