Rust

Memory Management

Stack vs heap, allocator, Drop trait, RAII, memory leak con cicli Rc, Pin<T>

20 domande da colloquio·
Senior
1

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.

2

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.

3

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.

4

Quando viene chiamato automaticamente il trait Drop in Rust?

5

Come si può creare un memory leak con Rc<T> in Rust?

+17 domande da colloquio

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