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
CWin32Heap
HeapAlloc 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ı
Geri Bildirim
https://aka.ms/ContentUserFeedback.
Çok yakında: 2024 boyunca, içerik için geri bildirim mekanizması olarak GitHub Sorunları’nı kullanımdan kaldıracak ve yeni bir geri bildirim sistemiyle değiştireceğiz. Daha fazla bilgi için bkz.Gönderin ve geri bildirimi görüntüleyin