다음을 통해 공유


CWin32Heap 클래스

이 클래스는 Win32 힙 할당 함수를 사용하여 IAtlMemMgr 을 구현합니다.

Important

이 클래스와 해당 멤버는 Windows 런타임에서 실행되는 애플리케이션에서 사용할 수 없습니다.

구문

class CWin32Heap : public IAtlMemMgr

멤버

공용 생성자

속성 설명
CWin32Heap::CWin32Heap 생성자입니다.
CWin32Heap::~CWin32Heap 소멸자입니다.

공용 메서드

이름 설명
CWin32Heap::Allocate 힙 개체에서 메모리 블록을 할당합니다.
CWin32Heap::Attach 기존 힙에 힙 개체를 연결합니다.
CWin32Heap::D etach 기존 힙에서 힙 개체를 분리합니다.
CWin32Heap::Free 힙에서 이전에 할당된 메모리를 해제합니다.
CWin32Heap::GetSize 힙 개체에서 할당된 메모리 블록의 크기를 반환합니다.
CWin32Heap::재할당 힙 개체에서 메모리 블록을 다시 할당합니다.

공용 데이터 멤버

속성 설명
CWin32Heap::m_bOwnHeap 힙 핸들의 현재 소유권을 확인하는 데 사용되는 플래그입니다.
CWin32Heap::m_hHeap 힙 개체에 대한 핸들입니다.

설명

CWin32Heap는 HeapAllocHeapFree를 비롯한 Win32 힙 할당 함수를 사용하여 메모리 할당 메서드를 구현합니다. 다른 힙 클래스와 CWin32Heap 달리 메모리가 할당되기 전에 유효한 힙 핸들을 제공해야 합니다. 다른 클래스는 기본적으로 프로세스 힙을 사용합니다. 핸들은 생성자 또는 CWin32Heap::Attach 메서드에 제공할 수 있습니다. 자세한 내용은 CWin32Heap::CWin32Heap 메서드를 참조하세요.

예시

IAtlMemMgr에 대한 예제를 참조하세요.

상속 계층 구조

IAtlMemMgr

CWin32Heap

요구 사항

헤더: atlmem.h

CWin32Heap::Allocate

힙 개체에서 메모리 블록을 할당합니다.

virtual __declspec(allocator) void* Allocate(size_t nBytes) throw();

매개 변수

nBytes
새 메모리 블록의 요청된 바이트 수입니다.

Return Value

새로 할당된 메모리 블록에 대한 포인터를 반환합니다.

설명

CWin32Heap::Free 또는 CWin32Heap::Reallocate를 호출하여 이 메서드에서 할당한 메모리를 해제합니다.

HeapAlloc를 사용하여 구현됩니다.

CWin32Heap::Attach

기존 힙에 힙 개체를 연결합니다.

void Attach(HANDLE hHeap, bool bTakeOwnership) throw();

매개 변수

hHeap
기존 힙 핸들입니다.

bTakeOwnership
개체가 힙의 리소스에 CWin32Heap 대한 소유권을 가져오는지 여부를 나타내는 플래그입니다.

설명

bTakeOwnership이 TRUE CWin32Heap 이면 개체가 힙 핸들을 삭제해야 합니다.

CWin32Heap::CWin32Heap

생성자입니다.

CWin32Heap() throw();
CWin32Heap( HANDLE  hHeap) throw();
CWin32Heap(
    DWORD  dwFlags,
    size_t nInitialSize,
    size_t nMaxSize = 0);

매개 변수

hHeap
기존 힙 개체입니다.

dwFlags
힙을 만드는 데 사용되는 플래그입니다.

nInitialSize
힙의 초기 크기입니다.

nMaxSize
힙의 최대 크기입니다.

설명

메모리를 할당하기 전에 CWin32Heap 개체에 유효한 힙 핸들을 제공해야 합니다. 이는 프로세스 힙을 사용할 수 있는 가장 간단한 방법입니다.

CWin32Heap MyHeap(GetProcessHeap());   

또한 새 개체가 힙의 소유권을 계승하지 않는 경우 생성자에게 기존 힙 핸들을 제공할 수 있습니다. CWin32Heap 개체를 삭제해도 원래 힙 핸들은 계속해서 유효합니다.

CWin32Heap::Attach를 사용하여 기존 힙을 새 개체에 연결할 수도 있습니다.

작업이 하나의 스레드에서 모두 수행된 위치에 힙이 필요한 경우 다음과 같이 개체를 만드는 것이 가장 좋습니다.

CWin32Heap MyHeap(HEAP_NO_SERIALIZE, SomeInitialSize);   

매개 변수 HEAP_NO_SERIALIZE 힙 함수가 메모리를 할당하고 사용 가능한 경우 성능이 향상될 때 상호 제외가 사용되지 않도록 지정합니다.

세 번째 매개 변수의 기본값이 0으로 지정되어, 필요에 따라 힙을 증가시킬 수 있습니다. 메모리 크기 및 플래그에 대한 설명은 HeapCreate를 참조하세요.

CWin32Heap::~CWin32Heap

소멸자입니다.

~CWin32Heap() throw();

설명

개체에 힙의 소유권이 있는 CWin32Heap 경우 힙 핸들을 삭제합니다.

CWin32Heap::D etach

기존 힙에서 힙 개체를 분리합니다.

HANDLE Detach() throw();

Return Value

개체가 이전에 연결된 힙에 대한 핸들을 반환합니다.

CWin32Heap::Free

이전에 CWin32Heap::Allocate 또는 CWin32Heap::Reallocate에 의해 힙에서 할당된 메모리를 해제합니다.

virtual void Free(void* p) throw();

매개 변수

p
해제할 메모리 블록에 대한 포인터입니다. NULL은 유효한 값이며 아무 작업도 수행하지 않습니다.

CWin32Heap::GetSize

힙 개체에서 할당된 메모리 블록의 크기를 반환합니다.

virtual size_t GetSize(void* p) throw();

매개 변수

p
메서드의 크기를 가져올 메모리 블록에 대한 포인터입니다. CWin32Heap::Allocate 또는 CWin32Heap::Reallocate에서 반환되는 포인터입니다.

Return Value

할당된 메모리 블록의 크기(바이트)를 반환합니다.

CWin32Heap::m_bOwnHeap

m_hHeap 저장된 힙 핸들의 현재 소유권을 확인하는 데 사용되는 플래그입니다.

bool m_bOwnHeap;

CWin32Heap::m_hHeap

힙 개체에 대한 핸들입니다.

HANDLE m_hHeap;

설명

힙 개체에 대한 핸들을 저장하는 데 사용되는 변수입니다.

CWin32Heap::재할당

힙 개체에서 메모리 블록을 다시 할당합니다.

virtual __declspec(allocator) void* Reallocate(void* p, size_t nBytes) throw();

매개 변수

p
다시 할당할 메모리 블록에 대한 포인터입니다.

nBytes
할당된 블록의 새 크기(바이트)입니다. 블록은 더 크거나 작을 수 있습니다.

Return Value

새로 할당된 메모리 블록에 대한 포인터를 반환합니다.

설명

p가 NULL인 경우 메모리 블록이 아직 할당되지 않았으며 CWin32Heap::Allocate가 nBytes 인수와 함께 호출된 것으로 가정합니다.

참고 항목

클래스 개요
IAtlMemMgr 클래스
CLocalHeap 클래스
CGlobalHeap 클래스
CCRTHeap 클래스
CComHeap 클래스