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