IAtlMemMgr 클래스
이 클래스는 인터페이스를 메모리 관리자를 나타냅니다.
__interface __declspec( uuid( "654F7EF5-CFDF-4df9-A450-6C6A13C622C0" )) IAtlMemMgr
Members
메서드
메모리 블록을 할당 하는 데이 메서드를 호출 합니다. |
|
메모리 블록을 확보 하려면이 메서드를 호출 합니다. |
|
할당 된 메모리 블록의 크기를 검색 하려면이 메서드를 호출 합니다. |
|
메모리 블록을 다시 할당 하려면이 메서드를 호출 합니다. |
설명
이 인터페이스에 의해 구현 된 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