/*** *new.cxx - defines C++ new routine * * Copyright (c) Microsoft Corporation. All rights reserved. * *Purpose: * Defines C++ new routine. * *******************************************************************************/ #include #include #include #include #include #include #include #include void * operator new( size_t cb ) { void *res; for (;;) { // allocate memory block res = malloc(cb); // if successful allocation, return pointer to memory if (res) break; // call installed new handler if (!_callnewh(cb)) break; // new handler was successful -- try to allocate again } RTCCALLBACK(_RTC_Allocate_hook, (res, cb, 0)); return res; } void * operator new[]( size_t cb ) { void *res = operator new(cb); RTCCALLBACK(_RTC_Allocate_hook, (res, cb, 0)); return res; } /* debug operator new and new[] which do not throw */ void * operator new( size_t cb, int nBlockUse, const char * szFileName, int nLine) { (nBlockUse); (szFileName); (nLine); return operator new(cb); } void * operator new[]( size_t cb, int nBlockUse, const char * szFileName, int nLine) { (nBlockUse); (szFileName); (nLine); return operator new[](cb); }