| #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); | |
| } |