## CBaseObject Class

The CBaseObject class is an abstract base class that is the basis for all component objects. It maintains a process-wide count of active objects that can be queried from the DllCanUnloadNow entry point.

All Component Object Model (COM) objects are derived from the CUnknown class, which is derived from the CBaseObject class. Other objects can be derived from CBaseObject to assist in the detection of memory leaks, because CBaseObject maintains the count of created objects.

The constructor requires a character-string name that describes the object being created. This string can be displayed on the debugging screen to trace the creation of objects; the string will also be displayed upon deletion of the object. The string should be created in static storage rather than in local-function storage. The string can be enclosed by the NAME macro, which compiles to NULL in retail builds so that the static strings are optimized out during compilation.

    /* Typical object creation method */
    HRESULT CSomeClass::CreateMyObject(void)
    {
       HRESULT hr = NOERROR;

       CMyObject *pObject = new CMyObject(NAME("My filter object"),NULL,&hr);
          if (FAILED(hr)) {
             return hr;
       }

       if (pObject == NULL) {
          return E_OUTOFMEMORY;
       }
       m_pObject = pObject;
       return NOERROR;
    }

    /* Incorrect object creation method */

    HRESULT CSomeClass::ThisMayAccessViolate(void)
    {
       HRESULT hr = NOERROR;

       TCHAR MyObjectName[] = TEXT("My GP faulting object");
       CMyObject *pObject = new CMyObject(MyObjectName,NULL,&hr);
    }

Member Functions

Name | Description
CBaseObject | Constructs a CBaseObject object.
ObjectsActive | Retrieves the count of active objects.

###

CBaseObject::CBaseObject

CBaseObject Class

Constructs a CBaseObject object.

CBaseObject(
const TCHAR *pName
);

##### Parameters

pName
  Name assigned to the object for debugging purposes.

##### Return Values

No return value.

##### Remarks

The pName parameter should be allocated in static memory. This name appears on the debugging screen when the object is created and deleted.

###

CBaseObject::ObjectsActive

CBaseObject Class

Retrieves the count of active objects.

static LONG ObjectsActive( );

##### Return Values

Returns the current number of active objects.

© 1997 Microsoft Corporation. All rights reserved. Terms of Use.