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:
'''Zadanie 1 '''  Przerób przykłady z wykładu.
{{cwiczenie|1||


'''Zadanie 2 '''  Napisz własną implementację zasobnika pamięci
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||


'''Zadanie 3 '''  W oparciu o <code><nowiki>linked_pool</nowiki></code> napisz własne
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||


'''Wskazówka '''  Zobacz implementację zliczanie elementów w wykładzie 3.
Przerób nieznacznie alokator podany na wykładzie, tak  
 
'''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  
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||


'''Zadanie 5 '''  W oparciu o <code><nowiki>linked_pool</nowiki></code> napisz własny alokator pamięci.
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