Zarządzanie Pamięcią HeapAlloc - dobry pomysł?

0

Witam.

Podczas Nauki w szkole kiedyś tam używałem malloca. Po wgłębianiu się w źródła, doszedłem do HeapAlloc. Gdzieś tam w zakamarakch mojego zmącono-przygaszonego umysłu przyszedł pomysł na stworzenie menedżera pamięci na podstawie funkcji z członem Heap w nazwie. Dla każdego typu obiektowego którego by miało być więcej niż 1 (za wyjątkiem łańcuchów, typów mat. i z innych bibliotek) tworzona by była odpowiednia sterta (opakowana w klasę). jak np.:

 
class HeapBase
{
private:

	//Uchwyt do sterty
	HANDLE HeapHandle;
	//rozmiar maksymalny sterty
	ULong HeapSize_Max,
	//rozmiar sterty zajęty
		  HeapSize_Now;
	//właściciel sterty
	HANDLE ThreadOwner;

public:

	HeapBase(HANDLE Heap);
	//zwraca rozmiar sterty
	ULong GetHeapSize(bool HeapNow);
	//niszczy całkowicie sterte
	void DestroyHeap();
	//zwalnia całą stertę
	void FreeHeap();
	//Zwraca uchwyt do sterty
	HANDLE GetHeap();
	//Blokuje sterte
	bool Lock();
	//odbloowuje sterte
	bool Unlock();
	//Allokuje dane na stercie
	Pointer Alloc(bool SetZeroMem);
	//zwalnia dane ze sterty
	void Free(Pointer Ptr);
	//Sprawdza, czy obiekt nalezy do sterty
	bool PtrIsFromHeap(Pointer Ptr);
	//
	~HeapBase();
};

Oczywiście to tylko przykład. Sterty były by przechowywane w mapie Menedżera Stert, za pomocą program zarządzał by stertami. Każdy z obiektów lokowałby się na swoją własną stertę. Wyjątkiem by były ważniejsze obiekty, które by allokowane były na główną stertę. Dobry to pomysł? Jeśli nie, proszę, naprowadźcie mnie wtedy na efektywniejszą i właściwszą drogę. Pozdrawiam.

0

Tam miało być klasową stretę. Czyli jedną stertę wspólną dla wszystikch obiektów danej klasy. :)

1 użytkowników online, w tym zalogowanych: 0, gości: 1