For the Release version of the library, operator new performs an optimal memory allocation in a manner similar to malloc.
void* PASCAL operator new( size_t nSize ); void* PASCAL operator new( size_t, void* p ); void* PASCAL operator new( size_t nSize, LPCSTR lpszFileName, int nLine );
In the Debug version, operator new participates in an allocation-monitoring scheme designed to detect memory leaks.
If you use the code line
#define new DEBUG_NEW
before any of your implementations in a .CPP file, then the second version of new will be used, storing the filename and line number in the allocated block for later reporting. You do not have to worry about supplying the extra parameters; a macro takes care of that for you.
Even if you do not use DEBUG_NEW in Debug mode, you still get leak detection, but without the source-file line-number reporting described above.
If you override this operator, you must also override delete. Do not use the standard library _new_handler function.