Aracılığıyla paylaş


CWin32Heap Sınıfı

Bu sınıf, Win32 yığın ayırma işlevlerini kullanarak IAtlMemMgr uygular.

Önemli

Bu sınıf ve üyeleri Windows Çalışma Zamanı yürütülen uygulamalarda kullanılamaz.

Sözdizimi

class CWin32Heap : public IAtlMemMgr

Üyeler

Ortak Oluşturucular

Ad Tanım
CWin32Heap::CWin32Heap Oluşturucu.
CWin32Heap::~CWin32Heap Yok edici.

Genel Yöntemler

Ad Tanım
CWin32Heap::Allocate Yığın nesnesinden bir bellek bloğu ayırır.
CWin32Heap::Attach Yığın nesnesini var olan bir yığına ekler.
CWin32Heap::D etach Yığın nesnesini var olan bir yığından ayırır.
CWin32Heap::Free Daha önce yığından ayrılan belleği boşaltıyor.
CWin32Heap::GetSize Yığın nesnesinden ayrılan bir bellek bloğunun boyutunu döndürür.
CWin32Heap::Reallocate Yığın nesnesinden bir bellek bloğunu yeniden ayırır.

Ortak Veri Üyeleri

Ad Tanım
CWin32Heap::m_bOwnHeap Yığın tanıtıcısının geçerli sahipliğini belirlemek için kullanılan bayrak.
CWin32Heap::m_hHeap Yığın nesnesinin tutamacı.

Açıklamalar

CWin32HeapHeapAlloc ve HeapFree gibi Win32 yığın ayırma işlevlerini kullanarak bellek ayırma yöntemlerini uygular. Diğer Yığın sınıflarından farklı olarak, CWin32Heap bellek ayrılmadan önce geçerli bir yığın tanıtıcısının sağlanmasını gerektirir: diğer sınıflar işlem yığınını kullanmak için varsayılan olarak kullanılır. Tanıtıcı oluşturucuya veya CWin32Heap::Attach yöntemine sağlanabilir. Daha fazla ayrıntı için CWin32Heap::CWin32Heap yöntemine bakın.

Örnek

IAtlMemMgr örneğine bakın.

Devralma Hiyerarşisi

IAtlMemMgr

CWin32Heap

Gereksinimler

Üst bilgi: atlmem.h

CWin32Heap::Allocate

Yığın nesnesinden bir bellek bloğu ayırır.

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

Parametreler

nBayt
Yeni bellek bloğunda istenen bayt sayısı.

İade Değeri

Yeni ayrılan bellek bloğuna bir işaretçi döndürür.

Açıklamalar

Bu yöntem tarafından ayrılan belleği boşaltmak için CWin32Heap::Free veya CWin32Heap::Reallocate öğesini çağırın.

HeapAlloc kullanılarak uygulanır.

CWin32Heap::Attach

Yığın nesnesini var olan bir yığına ekler.

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

Parametreler

hHeap
Mevcut bir yığın tutamacı.

bTakeOwnership
Nesnenin yığının CWin32Heap kaynakları üzerinde sahiplik alıp almadığını belirten bir bayrak.

Açıklamalar

bTakeOwnership TRUE ise, CWin32Heap nesne yığın tutamacını silmekle sorumludur.

CWin32Heap::CWin32Heap

Oluşturucu.

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

Parametreler

hHeap
Varolan bir yığın nesnesi.

Dwflags
Yığını oluşturmak için kullanılan bayraklar.

nInitialSize
Yığının ilk boyutu.

nMaxSize
Yığının maksimum boyutu.

Açıklamalar

Belleği ayırmadan önce nesneye CWin32Heap geçerli bir yığın tanıtıcısı sağlamak gerekir. Bunu başarmanın en kolay yolu, işlem yığınını kullanmaktır:

CWin32Heap MyHeap(GetProcessHeap());   

Oluşturucuya varolan bir yığın tanıtıcısını sağlamak da mümkündür, fakat bu durumda yeni nesne yığının sahipliğini üstlenmez. Nesne silindiğinde CWin32Heap özgün yığın tutamacı geçerli olmaya devam eder.

Mevcut bir yığın, CWin32Heap::Attach kullanılarak yeni nesneye de eklenebilir.

Tüm işlemlerin tek bir iş parçacığından gerçekleştirildiği durumda yığın gerekliyse, nesneyi oluşturmanın en iyi yolu şudur:

CWin32Heap MyHeap(HEAP_NO_SERIALIZE, SomeInitialSize);   

HEAP_NO_SERIALIZE parametresi, yığın işlevleri ayrıldığında ve bellek boşalttığında, performans artışına göre karşılıklı dışlamanın kullanılmayacağını belirtir.

Üçüncü parametre varsayılan olarak 0'a ayarlanır ve bu da yığının istenen şekilde büyümesine izin verir. Bellek boyutlarının ve bayraklarının açıklaması için bkz . HeapCreate .

CWin32Heap::~CWin32Heap

Yok edici.

~CWin32Heap() throw();

Açıklamalar

Nesne yığının sahipliğine CWin32Heap sahipse yığın tutamacını yok eder.

CWin32Heap::D etach

Yığın nesnesini var olan bir yığından ayırır.

HANDLE Detach() throw();

İade Değeri

Tanıtıcıyı, nesnenin daha önce eklendiği yığına döndürür.

CWin32Heap::Free

Daha önce CWin32Heap::Allocate veya CWin32Heap::Reallocate tarafından yığından ayrılan belleği boşaltıyor.

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

Parametreler

P
Boşaltacak bellek bloğuna işaret eden işaretçi. NULL geçerli bir değerdir ve hiçbir şey yapmaz.

CWin32Heap::GetSize

Yığın nesnesinden ayrılan bir bellek bloğunun boyutunu döndürür.

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

Parametreler

P
Yöntemin boyutu elde edilecek bellek bloğu işaretçisi. Bu, CWin32Heap::Allocate veya CWin32Heap::Reallocate tarafından döndürülen bir işaretçidir.

İade Değeri

Ayrılan bellek bloğunun boyutunu bayt cinsinden döndürür.

CWin32Heap::m_bOwnHeap

m_hHeap depolanan yığın tanıtıcısının geçerli sahipliğini belirlemek için kullanılan bayrak.

bool m_bOwnHeap;

CWin32Heap::m_hHeap

Yığın nesnesinin tutamacı.

HANDLE m_hHeap;

Açıklamalar

Yığın nesnesine tanıtıcı depolamak için kullanılan değişken.

CWin32Heap::Reallocate

Yığın nesnesinden bir bellek bloğunu yeniden ayırır.

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

Parametreler

P
Yeniden dağıtacak bellek bloğunun işaretçisi.

nBayt
Ayrılan bloğun bayt cinsinden yeni boyutu. Blok daha büyük veya daha küçük hale getirilebilir.

İade Değeri

Yeni ayrılan bellek bloğuna bir işaretçi döndürür.

Açıklamalar

p NULL ise, bellek bloğunun henüz ayrılmadığı varsayılır ve nBytes bağımsız değişkeniyle CWin32Heap::Allocate çağrılır.

Ayrıca bkz.

Sınıfa Genel Bakış
IAtlMemMgr Sınıfı
CLocalHeap Sınıfı
CGlobalHeap Sınıfı
CCRTHeap Sınıfı
CComHeap Sınıfı