다음을 통해 공유


IAtlMemMgr 클래스

이 클래스는 인터페이스를 메모리 관리자를 나타냅니다.

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

Members

ztk4y4ak.collapse_all(ko-kr,VS.110).gif메서드

할당

메모리 블록을 할당 하는 데이 메서드를 호출 합니다.

자유형

메모리 블록을 확보 하려면이 메서드를 호출 합니다.

GetSize

할당 된 메모리 블록의 크기를 검색 하려면이 메서드를 호출 합니다.

다시 할당

메모리 블록을 다시 할당 하려면이 메서드를 호출 합니다.

설명

이 인터페이스에 의해 구현 된 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;
}

요구 사항

헤더: atlmem.h

참고 항목

기타 리소스

ATL 클래스 개요