
Memory Management
Stack vs heap, allocator, Drop trait, RAII, memory leaks with Rc cycles, Pin<T>
1En Rust, où sont stockées les variables locales de type primitif comme i32 ou bool ?
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.
2Quel smart pointer utiliser pour allouer une valeur sur le heap avec un unique propriétaire ?
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.
3Qu'est-ce que le pattern RAII (Resource Acquisition Is Initialization) en Rust ?
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.
Quand le trait Drop est-il automatiquement appelé en Rust ?
Comment créer une fuite mémoire (memory leak) avec Rc<T> en Rust ?
+17 questions d'entretien
Autres sujets d'entretien Rust
Les bases de Rust
Ownership & Borrowing
Structs & Enums
Gestion des erreurs
Collections
Modules & Packages
Traits
Generics
Lifetimes
Iterators & Closures
Smart Pointers
Concurrency Basics
async/await
Testing
Cargo & Ecosystem
Pattern Matching
Macros
Serde & Serialization
Unsafe Rust
Traits Avancés
Lifetimes Avancés
Type System
Tokio & Async I/O
Optimisation de Performance
Web Frameworks
Database Integration
Design Patterns Rust
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