Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

Zarządzanie pamięcią (WinAPP)

Ostatnio zmodyfikowano 2014-04-02 17:54
Autor Wiadomość
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.:
C/C++
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 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
P-107567
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?
P-107575
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 ;)
P-107623
« 1 »
  Strona 1 z 1