#include <stdlib.h>
#include <iostream>
struct a
{
virtual ~a(){};
void* operator new[] (size_t s)
{
void* p = malloc(s);
std::cout << "malloc returned " << p << std::endl;
return p;
}
void operator delete[] (void* p)
{
std::cout << "delete[] got " << p << std::endl;
free(p);
}
};
struct b
{
int x;
};
struct c: b, a
{
int y;
};
int main ()
{
c* cc = new c[10];
std::cout << "new[] expression returned " << (void*)cc << std::endl;
delete[] cc;
}
I2luY2x1ZGUgPHN0ZGxpYi5oPgojaW5jbHVkZSA8aW9zdHJlYW0+CiAKc3RydWN0IGEKewogIHZpcnR1YWwgfmEoKXt9OwogIHZvaWQqIG9wZXJhdG9yIG5ld1tdIChzaXplX3QgcykKICB7CiAgICB2b2lkKiBwID0gbWFsbG9jKHMpOwogICAgc3RkOjpjb3V0IDw8ICJtYWxsb2MgcmV0dXJuZWQgIiA8PCBwIDw8IHN0ZDo6ZW5kbDsKICAgIHJldHVybiBwOwogIH0KIAogIHZvaWQgb3BlcmF0b3IgZGVsZXRlW10gKHZvaWQqIHApCiAgewogICAgc3RkOjpjb3V0IDw8ICJkZWxldGVbXSBnb3QgIiA8PCBwIDw8IHN0ZDo6ZW5kbDsKICAgIGZyZWUocCk7CiAgfQp9OwogCnN0cnVjdCBiCnsKICBpbnQgeDsKfTsKIApzdHJ1Y3QgYzogYiwgYQp7CiAgaW50IHk7Cn07CiAKaW50IG1haW4gKCkKewogIGMqIGNjID0gbmV3IGNbMTBdOwogIHN0ZDo6Y291dCA8PCAibmV3W10gZXhwcmVzc2lvbiByZXR1cm5lZCAiIDw8ICh2b2lkKiljYyA8PCBzdGQ6OmVuZGw7CiAgZGVsZXRlW10gY2M7Cn0=