#include <iostream>
#include <new>
class test
{
int i; // 4 bytes
public:
test() {std::cout << "ctor" << std::endl;}
~test() {std::cout << "dtor" << std::endl;}
void* operator new[](size_t n)
{
void* result;
result = ::operator new[](n);
std::cout << "operator new[] size:" << n << " at:" << result << std::endl;
return result;
}
};
int main(int, char**)
{
test* p = new test[2];
std::cout << "new test[2] at:" << p << std::endl;
delete[] p;
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8bmV3PgogCmNsYXNzIHRlc3QKewogICAgaW50IGk7ICAvLyA0IGJ5dGVzCnB1YmxpYzoKICAgIHRlc3QoKSB7c3RkOjpjb3V0IDw8ICJjdG9yIiA8PCBzdGQ6OmVuZGw7fQogICAgfnRlc3QoKSB7c3RkOjpjb3V0IDw8ICJkdG9yIiA8PCBzdGQ6OmVuZGw7fQogCiAgICB2b2lkKiBvcGVyYXRvciBuZXdbXShzaXplX3QgbikKICAgIHsKICAgICAgICB2b2lkKiByZXN1bHQ7CiAKICAgICAgICByZXN1bHQgPSA6Om9wZXJhdG9yIG5ld1tdKG4pOwogICAgICAgIHN0ZDo6Y291dCA8PCAib3BlcmF0b3IgbmV3W10gc2l6ZToiIDw8IG4gPDwgIiBhdDoiIDw8IHJlc3VsdCA8PCBzdGQ6OmVuZGw7CiAKICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgfQp9OwogCmludCBtYWluKGludCwgY2hhcioqKQp7CiAgICB0ZXN0KiBwID0gbmV3IHRlc3RbMl07CiAKICAgIHN0ZDo6Y291dCA8PCAibmV3IHRlc3RbMl0gYXQ6IiA8PCBwIDw8IHN0ZDo6ZW5kbDsKIAogICAgZGVsZXRlW10gcDsKIAogICAgcmV0dXJuIDA7Cn0=