Zaawansowane CPP/Ćwiczenia 14: Zarządzanie pamięcią: Różnice pomiędzy wersjami

Z Studia Informatyczne
Przejdź do nawigacjiPrzejdź do wyszukiwania
 
Linia 1: Linia 1:
 
''Uwaga: przekonwertowane latex2mediawiki; prawdopodobnie trzeba wprowadzi� poprawki''
 
 
{Zarządzanie pamięcią}
 
 
 
'''Zadanie 1 '''  Przerób przykłady z wykładu.  
 
'''Zadanie 1 '''  Przerób przykłady z wykładu.  
  
Linia 11: Linia 6:
 
puli powina być podawana w konstruktorze.
 
puli powina być podawana w konstruktorze.
  
  <nowiki> template<typename T> linked_pool {
+
  <nowiki>template<typename T> linked_pool {
  
 
linked_pool(size_t n);
 
linked_pool(size_t n);
Linia 27: Linia 22:
 
powinien zostać zwrócony wskaźnik zerowy.  
 
powinien zostać zwrócony wskaźnik zerowy.  
  
'''Zadanie 3 '''  W oparciu o <code><nowiki> linked_pool</nowiki></code> napisz własne
+
'''Zadanie 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ć.
  
'''Wskazówka '''  Zobacz implementację zliczanie elementów w wykładzie&nbsp;3.  
+
'''Wskazówka '''  Zobacz implementację zliczanie elementów w wykładzie 3.  
  
 
'''Zadanie 4 '''  Przerób nieznacznie alokator podany na wykładzie, tak  
 
'''Zadanie 4 '''  Przerób nieznacznie alokator podany na wykładzie, tak  
Linia 38: Linia 33:
 
kontenerów?
 
kontenerów?
  
'''Zadanie 5 '''  W oparciu o <code><nowiki> linked_pool</nowiki></code> napisz własny alokator pamięci.
+
'''Zadanie 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ć?.

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ć?.