#include <iostream>
#include <cstdlib>
void* operator new(std::size_t count)
{
void *allocated = std::malloc(count);
std::cout << __PRETTY_FUNCTION__ << " with count " << count << " : " << allocated << std::endl;
return allocated;
}
void operator delete(void* ptr) noexcept
{
std::cout << __PRETTY_FUNCTION__ << " with ptr " << ptr << std::endl;
std::free(ptr);
}
struct myclass
{
myclass() { std::cout << __PRETTY_FUNCTION__ << std::endl; }
~myclass() { std::cout << __PRETTY_FUNCTION__ << std::endl; }
short dummy;
};
int main()
{
std::cout << "sizeof(size_t) : " << sizeof(std::size_t) << std::endl;
std::cout << "sizeof(myclass) : " << sizeof(myclass) << std::endl;
myclass *arr = new myclass[3];
std::cout << "arr : " << arr << std::endl;
delete[] arr;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgoKI2luY2x1ZGUgPGNzdGRsaWI+Cgp2b2lkKiBvcGVyYXRvciBuZXcoc3RkOjpzaXplX3QgY291bnQpCnsKICB2b2lkICphbGxvY2F0ZWQgPSBzdGQ6Om1hbGxvYyhjb3VudCk7CiAgc3RkOjpjb3V0IDw8IF9fUFJFVFRZX0ZVTkNUSU9OX18gPDwgIiB3aXRoIGNvdW50ICIgPDwgY291bnQgPDwgIiA6ICIgPDwgYWxsb2NhdGVkIDw8IHN0ZDo6ZW5kbDsKICByZXR1cm4gYWxsb2NhdGVkOwp9Cgp2b2lkIG9wZXJhdG9yIGRlbGV0ZSh2b2lkKiBwdHIpIG5vZXhjZXB0CnsKICBzdGQ6OmNvdXQgPDwgX19QUkVUVFlfRlVOQ1RJT05fXyA8PCAiIHdpdGggcHRyICIgPDwgcHRyIDw8IHN0ZDo6ZW5kbDsKICBzdGQ6OmZyZWUocHRyKTsKfQoKc3RydWN0IG15Y2xhc3MKewogIG15Y2xhc3MoKSB7IHN0ZDo6Y291dCA8PCBfX1BSRVRUWV9GVU5DVElPTl9fIDw8IHN0ZDo6ZW5kbDsgfQogIH5teWNsYXNzKCkgeyBzdGQ6OmNvdXQgPDwgX19QUkVUVFlfRlVOQ1RJT05fXyA8PCBzdGQ6OmVuZGw7IH0KCiAgc2hvcnQgZHVtbXk7Cn07CgppbnQgbWFpbigpCnsKICBzdGQ6OmNvdXQgPDwgInNpemVvZihzaXplX3QpIDogIiA8PCBzaXplb2Yoc3RkOjpzaXplX3QpIDw8IHN0ZDo6ZW5kbDsKICBzdGQ6OmNvdXQgPDwgInNpemVvZihteWNsYXNzKSA6ICIgPDwgc2l6ZW9mKG15Y2xhc3MpIDw8IHN0ZDo6ZW5kbDsKICBteWNsYXNzICphcnIgPSBuZXcgbXljbGFzc1szXTsKICBzdGQ6OmNvdXQgPDwgImFyciA6ICIgPDwgYXJyIDw8IHN0ZDo6ZW5kbDsKCiAgZGVsZXRlW10gYXJyOwp9Cg==