For the Release version of the library, operator delete frees the memory allocated by operator new.
void PASCAL operator delete( void* p ); void PASCAL operator delete( void* p, void* pPlace ); void PASCAL operator delete( void* p, LPCSTR lpszFileName, int nLine );
In the Debug version, operator delete participates in an allocation-monitoring scheme designed to detect memory leaks.
If you use the code line
before any of your implementations in a .CPP file, then the third version of delete 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 operators new and delete, you forfeit this diagnostic capability.