
Memory Management
Stack vs heap, allocator, Drop trait, RAII, memory leak con cicli Rc, Pin<T>
1In Rust, dove vengono memorizzate le variabili locali di tipi primitivi come i32 o bool?
In Rust, dove vengono memorizzate le variabili locali di tipi primitivi come i32 o bool?
Risposta
Le variabili locali di tipi primitivi vengono memorizzate sullo stack. Lo stack offre un'allocazione e una deallocazione molto rapide perché opera secondo il principio LIFO (Last In, First Out). I tipi primitivi hanno una dimensione nota al momento della compilazione, il che consente al compilatore di riservare lo spazio necessario nello stack frame della funzione corrente.
2Quale smart pointer si dovrebbe usare per allocare un valore sull'heap con un unico proprietario?
Quale smart pointer si dovrebbe usare per allocare un valore sull'heap con un unico proprietario?
Risposta
Box<T> è lo smart pointer più semplice per l'allocazione sull'heap. Garantisce un'unica ownership e libera automaticamente la memoria quando il Box esce dallo scope. Box è utile per tipi con dimensione sconosciuta al momento della compilazione, per strutture grandi che non si vuole copiare sullo stack, o per tipi ricorsivi.
3Che cos'è il pattern RAII (Resource Acquisition Is Initialization) in Rust?
Che cos'è il pattern RAII (Resource Acquisition Is Initialization) in Rust?
Risposta
RAII è un pattern in cui le risorse (memoria, file, connessioni) vengono acquisite durante la creazione di un oggetto e rilasciate automaticamente alla sua distruzione. In Rust, ciò avviene tramite il trait Drop, che viene chiamato automaticamente quando un valore esce dallo scope. Questo pattern garantisce che nessuna risorsa venga dimenticata ed evita i memory leak.
Quando viene chiamato automaticamente il trait Drop in Rust?
Come si può creare un memory leak con Rc<T> in Rust?
+17 domande da colloquio
Altri argomenti di colloquio Rust
Fondamenti di Rust
Ownership & Borrowing
Structs & Enums
Gestione degli errori
Collezioni
Moduli e package
Traits
Generics
Lifetimes
Iterators & Closures
Smart Pointers
Concurrency Basics
async/await
Testing
Cargo & Ecosystem
Pattern Matching
Macro
Serde e serializzazione
Unsafe Rust
Trait avanzati
Lifetime Avanzati
Type System
Tokio & Async I/O
Ottimizzazione delle Prestazioni
Web Frameworks
Database Integration
Design Pattern in Rust
Padroneggia Rust per il tuo prossimo colloquio
Accedi a tutte le domande, flashcards, test tecnici, esercizi di code review e simulatori di colloquio.
Inizia gratis