Zarządzanie pamięcią (WinAPP)
Ostatnio zmodyfikowano 2014-04-02 17:54
moderzy.net Temat założony przez niniejszego użytkownika |
Zarządzanie pamięcią (WinAPP) » 2014-04-01 17:29:37 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: HANDLE HeapHandle; ULong HeapSize_Max, HeapSize_Now; HANDLE ThreadOwner; public: HeapBase( HANDLE Heap ); ULong GetHeapSize( bool HeapNow ); void DestroyHeap(); void FreeHeap(); HANDLE GetHeap(); bool Lock(); bool Unlock(); Pointer Alloc( bool SetZeroMem ); void Free( Pointer Ptr ); 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 klasową stertę (to znaczy, że każda klasa posiadała by swoją 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 |
|
pekfos |
» 2014-04-01 18:28:01 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 |
Po co? |
|
moderzy.net Temat założony przez niniejszego użytkownika |
Zarządzanie Pamięcią » 2014-04-02 17:54:33 Wydaje mi się, że: było by to bezpieczne wątkowo(wątki mogłoby alokować pamięć dla różnych typów obiektów w tym samym czasie nie czekając na siebie), a także z powodów szybkościowych(alokacja na kilku mniejszych stertach była by wg. mnie szybsza i mniej fragmentująca dla pamięci, niż na globalnej stercie). Jeżeli się mylę, to mnie poprawcie ;) |
|
« 1 » |