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.