Sdílet prostřednictvím


Třída IAtlMemMgr

Tato třída představuje rozhraní správce paměti.

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

Členy

Metody

Přidělit

Volání této metody přidělit blok paměti.

Volný

Volání této metody volného bloku paměti.

GetSize

Volání této metody velikost bloku přidělené paměti pro načtení.

Přerozdělování

Volání této metody přerozdělit bloku paměti.

Poznámky

Toto rozhraní je implementováno prostřednictvím CComHeap, CCRTHeap, CLocalHeap, CGlobalHeap, nebo CWin32Heap.

[!POZNÁMKA]

Funkce Místní a globální haldy jsou pomalejší než další funkce správy paměti a neposkytuje tolik funkcí.Proto by měly používat nové aplikace funkce haldy.Jsou k dispozici v CWin32Heap třídy.

Příklad

// 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;
}

Požadavky

Záhlaví: atlmem.h

Viz také

Další zdroje

Přehled třídy ATL