Freigeben über


IAtlMemMgr Class

Diese Klasse stellt die Schnittstelle für einen Speicher-Manager dar.

__interface __declspec( uuid( "654F7EF5-CFDF-4df9-A450-6C6A13C622C0" )) IAtlMemMgr

Mitglieder

Methoden

Ordnen Sie zu

Rufen Sie diese Methode auf, um einen Speicherblock zuzuordnen.

Frei

Rufen Sie diese Methode auf, um einen Speicherblock freizugeben.

GetSize

Rufen Sie diese Methode auf, um die Größe eines reservierten Speicherblocks abzurufen.

Teilen Sie neu zu

Rufen Sie diese Methode auf, um einen Speicherblock neu belegen.

Hinweise

Diese Schnittstelle wird von CComHeap, CCRTHeap, CLocalHeap, CGlobalHeap oder CWin32Heap implementiert.

Hinweis

Die lokale und die globalen Heapfunktionen sind langsamer als andere Speicherverwaltungsfunktionen und stellen keine bis zu Funktionen.Daher sollten neue Anwendungen Heapfunktionen verwenden.Diese sind in der CWin32Heap-Klasse verfügbar.

Beispiel

// Demonstrate IAtlMemMgr using the five possible 
// memory function implementation classes. 

HRESULT MemoryManagerDemonstration(IAtlMemMgr& MemoryManager) throw()
{
   // The IAtlMemMgr interface guarantees not to throw exceptions 
   // so we can make the same guarantee for this function 
   // without adding exception handling code. 

   // A variable which will point to some allocated memory. 
   void* pMemory = NULL;

   const size_t BytesInChunk = 1024;

   // Allocate a chunk of memory
   pMemory = MemoryManager.Allocate(BytesInChunk);

   // Confirm the validity of the allocated memory 
   if (pMemory == NULL)
      return E_OUTOFMEMORY;

   // Confirm the size of the allocated memory
   ATLASSERT(MemoryManager.GetSize(pMemory) == BytesInChunk);

   // Increase the size of the allocated memory
   pMemory = MemoryManager.Reallocate(pMemory, BytesInChunk * 2);

   // Confirm the validity of the allocated memory 
   if (pMemory == NULL)
      return E_OUTOFMEMORY;

   // Confirm the size of the reallocated  memory
   ATLASSERT(MemoryManager.GetSize(pMemory) == BytesInChunk * 2);

   // Free the allocated memory
   MemoryManager.Free(pMemory);

   return S_OK;
}

int DoMemoryManagerDemonstration()
{
   CComHeap heapCom;
   CCRTHeap heapCrt;
   CLocalHeap heapLocal;
   CGlobalHeap heapGlobal;
   // It is necessary to provide extra information  
   // to the constructor when using CWin32Heap
   CWin32Heap heapWin32(NULL, 4096); 

   ATLASSERT(S_OK==MemoryManagerDemonstration(heapCom));
   ATLASSERT(S_OK==MemoryManagerDemonstration(heapCrt));
   ATLASSERT(S_OK==MemoryManagerDemonstration(heapLocal));
   ATLASSERT(S_OK==MemoryManagerDemonstration(heapGlobal));
   ATLASSERT(S_OK==MemoryManagerDemonstration(heapWin32));

   return 0;
}

Anforderungen

Header: atlmem.h

Siehe auch

Weitere Ressourcen

ATL Class Overview