Zaawansowane CPP/Ćwiczenia 14: Zarządzanie pamięcią: Różnice pomiędzy wersjami
Nie podano opisu zmian |
Nie podano opisu zmian |
||
| Linia 16: | Linia 16: | ||
linked_pool(); | linked_pool(); | ||
} | }</nowiki> | ||
</nowiki> | |||
Jeśli zarządamy za dużo pamięci, to | Jeśli zarządamy za dużo pamięci, to | ||
Wersja z 09:34, 3 wrz 2006
Zadanie 1 Przerób przykłady z wykładu.
Zadanie 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 przydzialał pamięc. Wielkość puli powina być podawana w konstruktorze.
template<typename T> linked_pool {
linked_pool(size_t n);
void *allocate() throw(); /*przydziela pamięc na jeden obiket 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.
Zadanie 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 Zobacz implementację zliczanie elementów w wykładzie 3.
Zadanie 4 Przerób nieznacznie alokator podany na wykładzie, tak aby jego funkcje wypisywały inforacje 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?
Zadanie 5 W oparciu o linked_pool napisz własny alokator pamięci.
Do jakich pojemników będzie można go stosować?.