Condividi tramite


IAtlMemMgr Class

Questa classe rappresenta l'interfaccia a un gestore di memoria.

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

Membri

Metodi

Allocare

Chiamare questo metodo per allocare un blocco di memoria.

Free

Chiamare questo metodo per liberare un blocco di memoria.

GetSize

Chiamare questo metodo per recuperare la dimensione di un blocco di memoria allocata.

Ridistribuire

Chiamare questo metodo per ridistribuire un blocco di memoria.

Note

L'interfaccia viene implementata da CComHeap, da CCRTHeap, da CLocalHeap, da CGlobalHeap, o da CWin32Heap.

Nota

Il locale e le funzioni globali dell'heap sono più lenti di altre funzioni di gestione della memoria e forniscono le funzionalità.Pertanto, le nuove applicazioni devono utilizzare funzioni heap.Questi sono disponibili nella classe CWin32Heap.

Esempio

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

Requisiti

Header: atlmem.h

Vedere anche

Altre risorse

ATL Class Overview