Rust

Memory Management

Stack vs heap, allocator, Drop trait, RAII, memory leaks with Rc cycles, Pin<T>

20 questions d'entretien·
Senior
1

En Rust, où sont stockées les variables locales de type primitif comme i32 ou bool ?

Réponse

Les variables locales de type primitif sont stockées sur la stack (pile). La stack offre une allocation et désallocation très rapide car elle fonctionne selon le principe LIFO (Last In, First Out). Les types primitifs ont une taille connue à la compilation, ce qui permet au compilateur de réserver l'espace nécessaire sur la stack frame de la fonction courante.

2

Quel smart pointer utiliser pour allouer une valeur sur le heap avec un unique propriétaire ?

Réponse

Box<T> est le smart pointer le plus simple pour allouer des données sur le heap. Il garantit un unique propriétaire et libère automatiquement la mémoire lorsque le Box sort du scope. Box est utile pour les types de taille inconnue à la compilation, pour les grandes structures qu'on ne veut pas copier sur la stack, ou pour les types récursifs.

3

Qu'est-ce que le pattern RAII (Resource Acquisition Is Initialization) en Rust ?

Réponse

RAII est un pattern où les ressources (mémoire, fichiers, connexions) sont acquises lors de la création d'un objet et libérées automatiquement lors de sa destruction. En Rust, cela se fait via le trait Drop qui est appelé automatiquement quand une valeur sort du scope. Ce pattern garantit qu'aucune ressource n'est oubliée et évite les fuites mémoire.

4

Quand le trait Drop est-il automatiquement appelé en Rust ?

5

Comment créer une fuite mémoire (memory leak) avec Rc<T> en Rust ?

+17 questions d'entretien

Maîtrise Rust pour ton prochain entretien

Accède à toutes les questions, flashcards, tests techniques, exercices de code review et simulateurs d'entretien.

Commencer gratuitement