Share via


CObject::operator new

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

Remarks

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.

Note

If you override this operator, you must also override delete. Do not use the standard library _new_handler function.

Example

See CObList::CObList for a listing of the CAge class used in the CObject examples.

void* CAge::operator new(size_t nSize)
{
   return malloc(nSize);
}

void* CAge::operator new(size_t nSize, LPCSTR lpszFileName, int nLine)
{
   UNREFERENCED_PARAMETER(lpszFileName);
   UNREFERENCED_PARAMETER(nLine);
   return malloc(nSize);
}

Requirements

Header: afx.h

See Also

Reference

CObject Class

Hierarchy Chart

CObject::operator delete