
Memory Management
Stack vs. Heap, Allocator, Drop trait, RAII, Memory Leaks durch Rc-Zyklen, Pin<T>
1Wo werden in Rust lokale Variablen primitiver Typen wie i32 oder bool gespeichert?
Wo werden in Rust lokale Variablen primitiver Typen wie i32 oder bool gespeichert?
Antwort
Lokale Variablen primitiver Typen werden auf dem Stack gespeichert. Der Stack bietet eine sehr schnelle Allokation und Freigabe, da er nach dem LIFO-Prinzip (Last In, First Out) arbeitet. Primitive Typen haben eine zur Compile-Zeit bekannte Größe, wodurch der Compiler den nötigen Platz im Stack-Frame der aktuellen Funktion reservieren kann.
2Welcher Smart Pointer sollte verwendet werden, um einen Wert mit einem einzigen Eigentümer auf dem Heap zu allozieren?
Welcher Smart Pointer sollte verwendet werden, um einen Wert mit einem einzigen Eigentümer auf dem Heap zu allozieren?
Antwort
Box<T> ist der einfachste Smart Pointer für die Heap-Allokation. Er garantiert alleinige Ownership und gibt den Speicher automatisch frei, wenn die Box den Scope verlässt. Box ist nützlich für Typen mit zur Compile-Zeit unbekannter Größe, für große Strukturen, die nicht auf dem Stack kopiert werden sollen, oder für rekursive Typen.
3Was ist das RAII-Muster (Resource Acquisition Is Initialization) in Rust?
Was ist das RAII-Muster (Resource Acquisition Is Initialization) in Rust?
Antwort
RAII ist ein Muster, bei dem Ressourcen (Speicher, Dateien, Verbindungen) bei der Erstellung eines Objekts erworben und bei dessen Zerstörung automatisch freigegeben werden. In Rust geschieht dies über den Drop-Trait, der automatisch aufgerufen wird, wenn ein Wert den Scope verlässt. Dieses Muster stellt sicher, dass keine Ressource vergessen wird, und verhindert Speicherlecks.
Wann wird der Drop-Trait in Rust automatisch aufgerufen?
Wie kann mit Rc<T> in Rust ein Speicherleck (Memory Leak) erzeugt werden?
+17 Interview-Fragen
Weitere Rust-Interviewthemen
Rust-Grundlagen
Ownership & Borrowing
Structs & Enums
Fehlerbehandlung
Collections
Module & Packages
Traits
Generics
Lifetimes
Iterators & Closures
Smart Pointers
Concurrency Basics
async/await
Testing
Cargo & Ecosystem
Pattern Matching
Makros
Serde & Serialisierung
Unsafe Rust
Fortgeschrittene Traits
Fortgeschrittene Lifetimes
Type System
Tokio & Async I/O
Performance-Optimierung
Web Frameworks
Database Integration
Rust Design Patterns
Meistere Rust für dein nächstes Interview
Zugang zu allen Fragen, Flashcards, technischen Tests, Code-Review-Übungen und Interview-Simulatoren.
Kostenlos starten