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
는 HeapAlloc 및 HeapFree를 비롯한 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 클래스