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 1: Linia 1:
{{cwiczenie|1||
{{cwiczenie|1||


Wykonaj podany na wykładzie przykład dotyczący alokacji zasobów
Wykonaj podany na wykładzie przykład dotyczący alokacji zasobów w
konstruktorze. Przekonaj się, że rzeczywiście prowadzi to do wycieku
konstruktorze. Przekonaj się, że rzeczywiście prowadzi to do wycieku
pamięci. Wypróbuj oba rozwiązania.
pamięci. Wypróbuj oba rozwiązania.
Linia 7: Linia 7:
{{cwiczenie|2||   
{{cwiczenie|2||   


Podaj przykład zasobu który może nie zostać zwolniony przez  
Podaj przykład zasobu, który może nie zostać zwolniony przez  
system operacyjny, nawet po zakończeniu programu.  
system operacyjny, nawet po zakończeniu programu.  
}}
}}
{{cwiczenie|3||  
{{cwiczenie|3||  


Przeanalizuj implementację tablicy z [[Zaawansowane CPP/Ćwiczenia 14: Zarz%C4%85dzanie_pami%C4%99ci%C4%85|ćwiczenia 14.4]], pod kątem
Przeanalizuj implementację tablicy z [[Zaawansowane CPP/Ćwiczenia 14: Zarz%C4%85dzanie_pami%C4%99ci%C4%85|ćwiczenia 14.4]] pod kątem
odporności na wyjątki. Nie zapomnij o konstruktorach. Popraw
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
implementacje, tak aby była bezpieczna. Czy można to uzyskać bez
razem z kontenerem <tt>Tablica</tt>.
dynamicznej alokacji pamięci?
}}
{{cwiczenie|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.
}}
}}

Wersja z 21:52, 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.