Zaawansowane CPP/Ćwiczenia 15: Wyjątkowo odporny kod: Różnice pomiędzy wersjami
Nie podano opisu zmian |
Nie podano opisu zmian |
||
Linia 22: | Linia 22: | ||
alokacji pamięci? Jeśli nie, to użyj pamięci przydzielanej dynamicznie. | alokacji pamięci? Jeśli nie, to użyj pamięci przydzielanej dynamicznie. | ||
}} | }} | ||
'''Rozwiązanie 2 ''' | |||
Prostą techniką blokowania zasobu może być, umieszczenie pliku | |||
{lock} w odpowiedniej kartotece. Jeśli program sam nie usunie tego | |||
pliku, to system tego nie zrobi. |
Wersja z 21:53, 26 wrz 2006
Ćwiczenie 1
Wykonaj podany na wykładzie przykład dotyczący alokacji zasobów w konstruktorze. Przekonaj się, że rzeczywiście prowadzi to do wycieku pamięci. Wypróbuj oba rozwiązania.
Ćwiczenie 2
Podaj przykład zasobu, który może nie zostać zwolniony przez system operacyjny, nawet po zakończeniu programu.
Ćwiczenie 3
Przeanalizuj implementację tablicy z ćwiczenia 14.4 pod kątem odporności na wyjątki. Nie zapomnij o konstruktorach i operatorze przypisania. Napisz przykładową klasę rzucającą wyjątki i sprawdź jej działanie razem z kontenerem Tablica.
Ćwiczenie 4
Popraw implementację tak, aby w przypadku wystąpienia wyjątku tablica pozostawała niezmieniona. Czy da się to zapewnić bez dynamicznej alokacji pamięci? Jeśli nie, to użyj pamięci przydzielanej dynamicznie.
Rozwiązanie 2
Prostą techniką blokowania zasobu może być, umieszczenie pliku {lock} w odpowiedniej kartotece. Jeśli program sam nie usunie tego pliku, to system tego nie zrobi.