Rust

Memory Management

Stack a heap, allocator, Drop trait, RAII, wycieki pamięci spowodowane cyklami Rc, Pin<T>

20 pytań z rozmów·
Senior
1

Gdzie w Rust przechowywane są zmienne lokalne typów prymitywnych, takich jak i32 czy bool?

Odpowiedź

Zmienne lokalne typów prymitywnych są przechowywane na stosie (stack). Stack zapewnia bardzo szybką alokację i zwalnianie, ponieważ działa zgodnie z zasadą LIFO (Last In, First Out). Typy prymitywne mają rozmiar znany w czasie kompilacji, co pozwala kompilatorowi zarezerwować potrzebne miejsce w stack frame bieżącej funkcji.

2

Którego smart pointera należy użyć, aby zaalokować wartość na stercie (heap) z jednym właścicielem?

Odpowiedź

Box<T> to najprostszy smart pointer do alokacji na stercie (heap). Gwarantuje pojedynczego właściciela i automatycznie zwalnia pamięć, gdy Box opuszcza scope. Box jest przydatny dla typów o nieznanym w czasie kompilacji rozmiarze, dla dużych struktur, których nie chcemy kopiować na stosie, lub dla typów rekurencyjnych.

3

Czym jest wzorzec RAII (Resource Acquisition Is Initialization) w Rust?

Odpowiedź

RAII to wzorzec, w którym zasoby (pamięć, pliki, połączenia) są pozyskiwane podczas tworzenia obiektu i automatycznie zwalniane przy jego niszczeniu. W Rust odbywa się to poprzez trait Drop, który jest automatycznie wywoływany, gdy wartość wychodzi poza scope. Ten wzorzec gwarantuje, że żaden zasób nie zostanie zapomniany, i zapobiega wyciekom pamięci.

4

Kiedy trait Drop jest automatycznie wywoływany w Rust?

5

Jak można utworzyć wyciek pamięci (memory leak) za pomocą Rc<T> w Rust?

+17 pytań z rozmów

Opanuj Rust na następną rozmowę

Uzyskaj dostęp do wszystkich pytań, flashcards, testów technicznych, ćwiczeń code review i symulatorów rozmów.

Zacznij za darmo