Zaawansowane CPP/Ćwiczenia 14: Zarządzanie pamięcią: Różnice pomiędzy wersjami
Z Studia Informatyczne
Przejdź do nawigacjiPrzejdź do wyszukiwania
Nie podano opisu zmian |
|||
Linia 1: | Linia 1: | ||
{{cwiczenie|1|| | |||
Przerób przykłady z wykładu. | |||
}} | |||
{{cwiczenie|2|| | |||
Napisz własną implementację zasobnika pamięci | |||
(memory pool). Zasobnik powinien być szablonem przyjmującym jako | (memory pool). Zasobnik powinien być szablonem przyjmującym jako | ||
parametr typ obiektów dla których będzie przydzialał pamięc. Wielkość | parametr typ obiektów dla których będzie przydzialał pamięc. Wielkość | ||
Linia 20: | Linia 24: | ||
Jeśli zarządamy za dużo pamięci, to | Jeśli zarządamy za dużo pamięci, to | ||
powinien zostać zwrócony wskaźnik zerowy. | powinien zostać zwrócony wskaźnik zerowy. | ||
}} | |||
{{cwiczenie|3|| | |||
W oparciu o <code><nowiki>linked_pool</nowiki></code> napisz własne | |||
operatory <code><nowiki>new</nowiki></code> i <code><nowiki>delete</nowiki></code>. Napisz klasę która, będzie | operatory <code><nowiki>new</nowiki></code> i <code><nowiki>delete</nowiki></code>. Napisz klasę która, będzie | ||
implementowała te operatory i która będzie można dziedziczyć. | implementowała te operatory i która będzie można dziedziczyć. | ||
}} | |||
<div class="mw-collapsible mw-made=collapsible mw-collapsed"><span class="mw-collapsible-toogle mw-collapsible-toogle-default style="font-variant:small-caps">Wskazówka </span><div class="mw-collapsible-content" style="display:none"> | |||
Zobacz implementację zliczanie elementów w wykładzie 3. | |||
</span><div class="mw-collapsible-content" style="display:none"> | |||
{{cwiczenie|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 | 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 | pojemników. Co możesz powiedzieć o sposobie przydziału pamięci dla róznych | ||
kontenerów? | kontenerów? | ||
}} | |||
{{cwiczenie|5|| | |||
W oparciu o <code><nowiki>linked_pool</nowiki></code> napisz własny alokator pamięci. | |||
Do jakich pojemników będzie można go stosować?. | Do jakich pojemników będzie można go stosować?. | ||
}}</div> |
Wersja z 19:15, 10 wrz 2006
Ć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 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.
Ć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