#include <new> using std::bad_alloc; extern "C" void *malloc (std::size_t); extern "C" void abort (void); void * operator new (std::size_t sz, const std::nothrow_t&) throw() { void *p; /* malloc (0) is unpredictable; avoid it. */ if (sz == 0) sz = 1; p = (void *) malloc (sz); return p; } void * operator new (std::size_t sz) throw (std::bad_alloc) { void *p; /* malloc (0) is unpredictable; avoid it. */ if (sz == 0) sz = 1; p = (void *) malloc (sz); while (p == 0) { ::abort(); } return p; } void* operator new[] (std::size_t sz) throw (std::bad_alloc) { return ::operator new(sz); } void * operator new[] (std::size_t sz, const std::nothrow_t& nothrow) throw() { return ::operator new(sz, nothrow); } |