Zaawansowane CPP/Ćwiczenia 14: Zarządzanie pamięcią

Z Studia Informatyczne
Przejdź do nawigacjiPrzejdź do wyszukiwania

Ćwiczenie 1

Przerób przykłady z wykładu.

Ćwiczenie 2

Napisz własną implementację zasobnika pamięci (memory pool). Zasobnik powinien być szablonem przyjmującym jako parametr typ obiektów dla których będzie przydzielał pamięć. Wielkość puli powinna być podawana w konstruktorze.

template<typename T> linked_pool {

linked_pool(size_t n);
void *allocate() throw(); /*przydziela pamięć na jeden obiekt T*/
void deallocate(void p) throw ();

release()throw ();

 ~linked_pool();

}

Jeśli zarządamy za dużo pamięci, to powinien zostać zwrócony wskaźnik zerowy.

Ćwiczenie 3

W oparciu o linked_pool napisz własne operatory new i delete. Napisz klasę która, będzie implementowała te operatory i która będzie można dziedziczyć.

Wskazówka

Ćwiczenie 4

Przerób nieznacznie alokator podany na wykładzie, tak aby jego funkcje wypisywały informacje o tym co robią. Użyj go z różnymi typami pojemników. Co możesz powiedzieć o sposobie przydziału pamięci dla róznych kontenerów?

Ćwiczenie 5

W oparciu o linked_pool napisz własny alokator pamięci. Do jakich pojemników będzie można go stosować?.