#include <iostream>
void * operator new(size_t size);
void operator delete(void * ptr) noexcept;
void * operator new(size_t size)
{
std::cout << "1\n";
return malloc(size);
}
void operator delete(void * ptr) noexcept
{
std::cout << "2\n";
free(ptr);
}
int main(void)
{
int *n1 = new int;
delete n1;
int *n2 = new int[10];
delete[] n2;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgoKdm9pZCAqIG9wZXJhdG9yIG5ldyhzaXplX3Qgc2l6ZSk7CnZvaWQgb3BlcmF0b3IgZGVsZXRlKHZvaWQgKiBwdHIpIG5vZXhjZXB0OwoKdm9pZCAqIG9wZXJhdG9yIG5ldyhzaXplX3Qgc2l6ZSkKewogICAgc3RkOjpjb3V0IDw8ICIxXG4iOwogICAgcmV0dXJuIG1hbGxvYyhzaXplKTsKfQoKdm9pZCBvcGVyYXRvciBkZWxldGUodm9pZCAqIHB0cikgbm9leGNlcHQKewogICAgc3RkOjpjb3V0IDw8ICIyXG4iOwogICAgZnJlZShwdHIpOwp9CgppbnQgbWFpbih2b2lkKQp7CiAgICBpbnQgKm4xID0gbmV3IGludDsKICAgIGRlbGV0ZSBuMTsKCiAgICBpbnQgKm4yID0gbmV3IGludFsxMF07CiAgICBkZWxldGVbXSBuMjsKfQ==