#include <new>
#include <cstdlib>
#include <iostream>
#include <stdexcept>
struct foo {};
inline void* operator new(size_t size, foo*) throw (std::bad_alloc)
{
std::cout << "my new " << size << std::endl;
return malloc(size);
}
inline void operator delete(void* p, foo*) throw()
{
std::cout << "my delete" << std::endl;
free(p);
}
int main()
{
delete new((foo*)NULL) foo;
}
I2luY2x1ZGUgPG5ldz4KI2luY2x1ZGUgPGNzdGRsaWI+CiNpbmNsdWRlIDxpb3N0cmVhbT4KI2luY2x1ZGUgPHN0ZGV4Y2VwdD4KIApzdHJ1Y3QgZm9vIHt9OwogCmlubGluZSB2b2lkKiBvcGVyYXRvciBuZXcoc2l6ZV90IHNpemUsIGZvbyopIHRocm93IChzdGQ6OmJhZF9hbGxvYykKewogICAgc3RkOjpjb3V0IDw8ICJteSBuZXcgIiA8PCBzaXplIDw8IHN0ZDo6ZW5kbDsKICAgIHJldHVybiBtYWxsb2Moc2l6ZSk7Cn0KIAppbmxpbmUgdm9pZCBvcGVyYXRvciBkZWxldGUodm9pZCogcCwgZm9vKikgdGhyb3coKQp7CiAgICBzdGQ6OmNvdXQgPDwgIm15IGRlbGV0ZSIgPDwgc3RkOjplbmRsOwogICAgZnJlZShwKTsKfQogCmludCBtYWluKCkKewogICAgZGVsZXRlIG5ldygoZm9vKilOVUxMKSBmb287Cn0=