#include<stdlib.h>
#include<stdio.h>
#include<iostream>
using namespace std;
class Test {
int x;
public:
void* operator new(size_t size);
void operator delete(void*);
Test(int i) {
x = i;
cout << "Constructor called \\n";
}
~Test() { cout << "Destructor called \\n"; }
};
void* Test::operator new(size_t size)
{
void *storage = malloc(size);
cout << "new called \\n";
return storage;
}
void Test::operator delete(void *p )
{
cout<<"delete called \\n";
free(p);
}
int main()
{
Test *m = new Test(5);
delete m;
return 0;
}
I2luY2x1ZGU8c3RkbGliLmg+CiNpbmNsdWRlPHN0ZGlvLmg+CiNpbmNsdWRlPGlvc3RyZWFtPgogCnVzaW5nIG5hbWVzcGFjZSBzdGQ7CiAKY2xhc3MgVGVzdCB7CiAgIGludCB4OwpwdWJsaWM6CiAgIHZvaWQqIG9wZXJhdG9yIG5ldyhzaXplX3Qgc2l6ZSk7CiAgIHZvaWQgb3BlcmF0b3IgZGVsZXRlKHZvaWQqKTsKICAgVGVzdChpbnQgaSkgewogICAgICAgeCA9IGk7CiAgICAgICBjb3V0IDw8ICJDb25zdHJ1Y3RvciBjYWxsZWQgXFxuIjsKICAgfQogICB+VGVzdCgpIHsgY291dCA8PCAiRGVzdHJ1Y3RvciBjYWxsZWQgXFxuIjsgfQp9OwogCiAKdm9pZCogVGVzdDo6b3BlcmF0b3IgbmV3KHNpemVfdCBzaXplKQp7CiAgIHZvaWQgKnN0b3JhZ2UgPSBtYWxsb2Moc2l6ZSk7CiAgIGNvdXQgPDwgIm5ldyBjYWxsZWQgXFxuIjsKICAgcmV0dXJuIHN0b3JhZ2U7Cn0KIAp2b2lkIFRlc3Q6Om9wZXJhdG9yIGRlbGV0ZSh2b2lkICpwICkKewogICBjb3V0PDwiZGVsZXRlIGNhbGxlZCBcXG4iOwogICBmcmVlKHApOwp9CiAKaW50IG1haW4oKQp7CiAgIFRlc3QgKm0gPSBuZXcgVGVzdCg1KTsKICAgZGVsZXRlIG07CiAgIHJldHVybiAwOwp9