Windows-Server-2003/base/crts/crtw32/stdcpp64/newop2.cpp

28 lines
606 B
C++

// newop2 operator new(size_t, const nothrow_t&) for Microsoft C++
#include <cstdlib>
#include <new>
_C_LIB_DECL
int _callnewh(size_t size);
_END_C_LIB_DECL
void *operator new(size_t size, const std::nothrow_t&) _THROW0()
{ // try to allocate size bytes
void *p;
while ((p = malloc(size)) == 0)
{ // buy more memory or return null pointer
_TRY_BEGIN
if (_callnewh(size) == 0)
break;
_CATCH(std::bad_alloc)
return (0);
_CATCH_END
}
return (p);
}
/*
* Copyright (c) 1995 by P.J. Plauger. ALL RIGHTS RESERVED.
* Consult your license regarding permissions and restrictions.
*/