Поделиться через


IAtlMemMgr Class

Этот класс представляет интерфейс диспетчера памяти.

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

Члены

Методы

Выберите

Вызовите этот метод, чтобы выделить блок памяти.

Свободная

Этот метод вызывается для освобождения блоков памяти.

GetSize

Вызывайте этот метод для извлечения размер выделенного блока памяти.

Reallocate

Вызовите этот метод, чтобы reallocate блока памяти.

Заметки

Этот интерфейс реализуется CComHeap, CCRTHeap, CLocalHeap, CGlobalHeap или CWin32Heap.

Примечание

Локальные и глобальные функции кучи медленнее, чем другие функции управления памятью, и не содержат так много функций.Таким образом, новые приложения должны использовать функции кучи.Эти доступных в классе CWin32Heap.

Пример

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

Требования

Header: atlmem.h

См. также

Другие ресурсы

ATL Class Overview