Zaawansowane CPP/Ćwiczenia 14: Zarządzanie pamięcią
Ć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ć.
Ć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ć?.