# Odpowiedzi — CPP09 Zapewnić zwolnienie zasobu przez strukturę programu, także przy wczesnym return. ## Task01 — Uchwyt jako obiekt Zwiąż stan otwarcia uchwytu z konstruktorem i destruktorem. Oczekiwany stdout: `acquire / open=1 / release / open=0`. Pliki dowodu: `src/task01/main.cpp`. Wynik nie jest oceniany wzrokowo: test kompiluje kod bez ostrzeżeń, uruchamia go i wykonuje dokładne `diff` z plikiem `tests/expected`. ## Task02 — Wczesny return Potwierdź zwolnienie strażnika przy wyjściu z funkcji przed jej końcem. Oczekiwany stdout: `acquire / work=short / release / after`. Pliki dowodu: `src/task02/main.cpp`. Wynik nie jest oceniany wzrokowo: test kompiluje kod bez ostrzeżeń, uruchamia go i wykonuje dokładne `diff` z plikiem `tests/expected`. ## Task03 — Zagnieżdżone zasoby Sprawdź zwalnianie zagnieżdżonych zasobów w odwrotnej kolejności. Oczekiwany stdout: `acquire=A / acquire=B / inside / release=B / release=A`. Pliki dowodu: `src/task03/main.cpp`. Wynik nie jest oceniany wzrokowo: test kompiluje kod bez ostrzeżeń, uruchamia go i wykonuje dokładne `diff` z plikiem `tests/expected`.