#include <iostream>
#include <stdlib.h>
#include <new>
using namespace std;
class x
{
public:
void f(){cout<<sizeof(*this)<<' '<<sizeof(x);}
// static void *operator new(size_t size,_PNH p);
static void *operator new(size_t size,new_handler p);
static void *operator new(size_t size)
{
return ::operator new (size);
}
};
void *x::operator new(size_t size,new_handler p)
{
if(0==size)
size=1;
set_new_handler(p);
return ::operator new(size);
}
void specialErrorHandler()
{
cout<<"error in alloc memory!\n";
exit(1);
}
int main()
{
class x *px1=new(specialErrorHandler) x;
// class x *px2=new(x);
// class x px1;
// px1.f();
px1->f();
delete px1;
// delete px2;
return 0;
}