// operator new(unsigned) // operator new[](unsigned) // operator new(unsigned, std::nothrow_t const&) // operator new[](unsigned, std::nothrow_t const&) #include <stdlib.h> #include <new> using std::nothrow_t; // A big structure. Its details don't matter. typedef struct { int array[1000]; } s; __attribute__((noinline)) void* operator new (std::size_t n) throw (std::bad_alloc) { return malloc(n); } __attribute__((noinline)) void* operator new (std::size_t n, std::nothrow_t const &) throw () { return malloc(n); } __attribute__((noinline)) void* operator new[] (std::size_t n) throw (std::bad_alloc) { return malloc(n); } __attribute__((noinline)) void* operator new[] (std::size_t n, std::nothrow_t const &) throw () { return malloc(n); } __attribute__((noinline)) void operator delete (void* p) { return free(p); } __attribute__((noinline)) void operator delete[] (void* p) { return free(p); } int main(void) { s* p1 = new s; s* p2 = new (std::nothrow) s; char* c1 = new char[2000]; char* c2 = new (std::nothrow) char[2000]; delete p1; delete p2; delete [] c1; delete [] c2; return 0; }