Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Opmerking
De ATL (Active Template Library) wordt nog steeds ondersteund. We voegen echter geen functies meer toe of werken de documentatie bij.
Deze klasse implementeert IAtlMemMgr met behulp van de Win32 heap-toewijzingsfuncties.
Belangrijk
Deze klasse en de bijbehorende leden kunnen niet worden gebruikt in toepassingen die worden uitgevoerd in Windows Runtime.
Syntaxis
class CWin32Heap : public IAtlMemMgr
Leden
Openbare constructors
| Naam | Description |
|---|---|
| CWin32Heap::CWin32Heap | De constructor. |
| CWin32Heap::~CWin32Heap | De destructor. |
Openbare methoden
| Naam | Description |
|---|---|
| CWin32Heap::Toewijzen | Wijst een blok geheugen toe vanuit het heap-object. |
| CWin32Heap::Attach | Koppelt het heap-object aan een bestaande heap. |
| CWin32Heap::D etach | Het heap-object loskoppelen van een bestaande heap. |
| CWin32Heap::Free | Hiermee wordt geheugen vrijgemaakt dat eerder is toegewezen vanuit de heap. |
| CWin32Heap::GetSize | Retourneert de grootte van een geheugenblok dat is toegewezen vanuit het heap-object. |
| CWin32Heap::Reallocate | Hiermee wordt een blok geheugen van het heap-object opnieuw verplaatst. |
Publieke dataleden
| Naam | Description |
|---|---|
| CWin32Heap::m_bOwnHeap | Een vlag die wordt gebruikt om het huidige eigendom van de heap-ingang te bepalen. |
| CWin32Heap::m_hHeap | Greep naar het heap-object. |
Opmerkingen
CWin32Heap implementeert geheugentoewijzingsmethoden met behulp van de Win32 heap-toewijzingsfuncties, waaronder HeapAlloc en HeapFree. In tegenstelling tot andere Heap-klassen moet CWin32Heap een geldige heap-ingang worden opgegeven voordat geheugen wordt toegewezen: de andere klassen gebruiken standaard de proces-heap. De greep kan worden geleverd aan de constructor of aan de CWin32Heap::Attach-methode . Zie de methode CWin32Heap::CWin32Heap voor meer informatie.
Example
Zie het voorbeeld voor IAtlMemMgr.
Overnamehiërarchie
IAtlMemMgr
CWin32Heap
Requirements
Koptekst: atlmem.h
CWin32Heap::Toewijzen
Wijst een blok geheugen toe vanuit het heap-object.
virtual __declspec(allocator) void* Allocate(size_t nBytes) throw();
Parameterwaarden
nBytes
Het aangevraagde aantal bytes in het nieuwe geheugenblok.
Retourwaarde
Hiermee wordt een aanwijzer geretourneerd naar het zojuist toegewezen geheugenblok.
Opmerkingen
Roep CWin32Heap::Free of CWin32Heap::Reallocate aan om het geheugen vrij te maken dat door deze methode is toegewezen.
Geïmplementeerd met Behulp van HeapAlloc.
CWin32Heap::Attach
Koppelt het heap-object aan een bestaande heap.
void Attach(HANDLE hHeap, bool bTakeOwnership) throw();
Parameterwaarden
hHeap
Een bestaande heaphandgreep.
bTakeOwnership
Een vlag die aangeeft of het CWin32Heap object eigenaar moet worden van de resources van de heap.
Opmerkingen
Als bTakeOwnership TRUE is, is het object verantwoordelijk voor het CWin32Heap verwijderen van de heapgreep.
CWin32Heap::CWin32Heap
De constructor.
CWin32Heap() throw();
CWin32Heap( HANDLE hHeap) throw();
CWin32Heap(
DWORD dwFlags,
size_t nInitialSize,
size_t nMaxSize = 0);
Parameterwaarden
hHeap
Een bestaand heap-object.
dwFlags
Vlaggen die worden gebruikt bij het maken van de heap.
nInitialSize
De oorspronkelijke grootte van de heap.
nMaxSize
De maximale grootte van de heap.
Opmerkingen
Voordat u geheugen toegeeft, moet u het CWin32Heap object voorzien van een geldige heapgreep. De eenvoudigste manier om dit te bereiken is door het proces heap te gebruiken:
CWin32Heap MyHeap(GetProcessHeap());
Het is ook mogelijk om een bestaande heapgreep aan de constructor te leveren, in welk geval het nieuwe object niet het eigendom van de heap overneemt. De oorspronkelijke heapgreep is nog steeds geldig wanneer het CWin32Heap object wordt verwijderd.
Een bestaande heap kan ook worden gekoppeld aan het nieuwe object met behulp van CWin32Heap::Attach.
Als een heap is vereist wanneer bewerkingen allemaal worden uitgevoerd vanuit één thread, kunt u het object het beste als volgt maken:
CWin32Heap MyHeap(HEAP_NO_SERIALIZE, SomeInitialSize);
De parameter HEAP_NO_SERIALIZE geeft aan dat wederzijdse uitsluiting niet wordt gebruikt wanneer de heap-functies toewijzen en vrij geheugen, met een toename van de prestaties.
De derde parameter wordt standaard ingesteld op 0, waardoor de heap naar behoefte kan groeien. Zie HeapCreate voor een uitleg van de geheugengrootten en vlaggen.
CWin32Heap::~CWin32Heap
De destructor.
~CWin32Heap() throw();
Opmerkingen
Vernietigt de heapgreep als het CWin32Heap object eigenaar is van de heap.
CWin32Heap::D etach
Het heap-object loskoppelen van een bestaande heap.
HANDLE Detach() throw();
Retourwaarde
Retourneert de greep naar de heap waaraan het object eerder is gekoppeld.
CWin32Heap::Free
Geheugen vrij dat eerder is toegewezen vanuit de heap door CWin32Heap::Toewijzen of CWin32Heap::Reallocate.
virtual void Free(void* p) throw();
Parameterwaarden
p
Wijs het geheugenblok aan om vrij te maken. NULL is een geldige waarde en doet niets.
CWin32Heap::GetSize
Retourneert de grootte van een geheugenblok dat is toegewezen vanuit het heap-object.
virtual size_t GetSize(void* p) throw();
Parameterwaarden
p
Wijs het geheugenblok aan waarvan de grootte van de methode wordt verkregen. Dit is een aanwijzer die wordt geretourneerd door CWin32Heap::Toewijzen of CWin32Heap::Reallocate.
Retourwaarde
Retourneert de grootte in bytes van het toegewezen geheugenblok.
CWin32Heap::m_bOwnHeap
Een vlag die wordt gebruikt om het huidige eigendom van de heap-ingang te bepalen die is opgeslagen in m_hHeap.
bool m_bOwnHeap;
CWin32Heap::m_hHeap
Greep naar het heap-object.
HANDLE m_hHeap;
Opmerkingen
Een variabele die wordt gebruikt om een ingang op te slaan in het heap-object.
CWin32Heap::Reallocate
Hiermee wordt een blok geheugen van het heap-object opnieuw verplaatst.
virtual __declspec(allocator) void* Reallocate(void* p, size_t nBytes) throw();
Parameterwaarden
p
Wijs het geheugenblok aan om opnieuw te kunnen toewijzen.
nBytes
De nieuwe grootte in bytes van het toegewezen blok. Het blok kan groter of kleiner worden gemaakt.
Retourwaarde
Hiermee wordt een aanwijzer geretourneerd naar het zojuist toegewezen geheugenblok.
Opmerkingen
Als p NULL is, wordt ervan uitgegaan dat het geheugenblok nog niet is toegewezen en CWin32Heap::Toewijzing wordt aangeroepen, met een argument van nBytes.
Zie ook
Overzicht van klassen
IAtlMemMgr-klasse
CLocalHeap-klasse
CGlobalHeap-klasse
CCRTHeap-klasse
CComHeap-klasse