--- title: Memory Managment author: Mateusz Reis tags: PARO --- # Raport - Memory Managment ## Zadanie 1 W example1 zaalokowaliśmy pamięć dla int-a ale nigdy jej nie zwolniliśmy, aby to zrobić dodajemy przed return-em delete. ## Zadanie 2 Podobnie jak w example1, tutaj zapomnieliśmy o zwolnieniu zaalokowanej pamięci. W vectorze znajdują się wskaźniki do pamięci, więc każdy musimy zwolnić po kolei, do wykonanania rej operacji używamy wcześniej zdefiniowanej funkcji deallocateInts(). ## Zadanie 3 Wyjątek może zostać rzucony przed zwolnieniem pamięci, więc pamięć zwolnimy po wykoaniu *try-catch*. ## Zadanie 4 Zmieniamy klasyczny wskaźnik na smart-pointer, który zwolni za nas pamięć po tym jak obiekt klasy *MyPointer* zostanie usunięty. ## Zadanie 5 Zgodnie z instrukcją używamy *unique_pointer*. Pozwala to znacznie uprościć kod oraz pozwala uniknąć wycieków pamięci. Także early return-y możemy pozbawić nawiasów co dodatkowo poprawia czytelność. ## Zadanie 6 Otwieramy plik przy pomocy **fopen** w funkcji *makeFile*, piszemy przy pomocy **fprintf** w funkcji *addToFile*. Dodatkowo przy tworzeniu smart pointera, podajemy niestanadarowy deleter, który zamknie plik przy pomocy **fclose**.