Zaawansowane CPP/Ćwiczenia 15: Wyjątkowo odporny kod: Różnice pomiędzy wersjami

Z Studia Informatyczne
Przejdź do nawigacjiPrzejdź do wyszukiwania
Mirek (dyskusja | edycje)
Nie podano opisu zmian
Mirek (dyskusja | edycje)
Nie podano opisu zmian
 
Linia 12: Linia 12:


<div class="mw-collapsible mw-made=collapsible mw-collapsed"><span class="mw-collapsible-toogle mw-collapsible-toogle-default style="font-variant:small-caps">Rozwiązanie</span><div class="mw-collapsible-content" style="display:none">
<div class="mw-collapsible mw-made=collapsible mw-collapsed"><span class="mw-collapsible-toogle mw-collapsible-toogle-default style="font-variant:small-caps">Rozwiązanie</span><div class="mw-collapsible-content" style="display:none">
Prostą techniką blokowania zasobu może być, umieszczenie pliku
Prostą techniką blokowania zasobu może być umieszczenie pliku
<tt>lock</tt> w odpowiedniej kartotece. Jeśli program sam nie usunie tego
<tt>lock</tt> w odpowiedniej kartotece. Jeśli program sam nie usunie tego
pliku, to system tego nie zrobi.
pliku, to system tego nie zrobi.

Aktualna wersja na dzień 21:55, 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.

Rozwiązanie

Ć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.