
Memory Management
Stack vs heap, allocator, Drop trait, RAII, vazamentos de memória com ciclos Rc, Pin<T>
1Em Rust, onde são armazenadas as variáveis locais de tipos primitivos como i32 ou bool?
Em Rust, onde são armazenadas as variáveis locais de tipos primitivos como i32 ou bool?
Resposta
As variáveis locais de tipos primitivos são armazenadas na stack. A stack oferece alocação e desalocação muito rápidas porque opera segundo o princípio LIFO (Last In, First Out). Os tipos primitivos têm um tamanho conhecido em tempo de compilação, o que permite ao compilador reservar o espaço necessário no stack frame da função atual.
2Qual smart pointer deve ser usado para alocar um valor no heap com um único proprietário?
Qual smart pointer deve ser usado para alocar um valor no heap com um único proprietário?
Resposta
Box<T> é o smart pointer mais simples para alocar dados no heap. Ele garante um único proprietário e libera a memória automaticamente quando o Box sai do scope. Box é útil para tipos com tamanho desconhecido em tempo de compilação, para estruturas grandes que não se quer copiar na stack, ou para tipos recursivos.
3O que é o padrão RAII (Resource Acquisition Is Initialization) em Rust?
O que é o padrão RAII (Resource Acquisition Is Initialization) em Rust?
Resposta
RAII é um padrão em que os recursos (memória, arquivos, conexões) são adquiridos durante a criação de um objeto e liberados automaticamente na sua destruição. Em Rust, isso é feito por meio do trait Drop, que é chamado automaticamente quando um valor sai do scope. Esse padrão garante que nenhum recurso seja esquecido e evita vazamentos de memória.
Quando o trait Drop é chamado automaticamente em Rust?
Como é possível criar um vazamento de memória (memory leak) com Rc<T> em Rust?
+17 perguntas de entrevista
Outros temas de entrevista Rust
Fundamentos de Rust
Ownership & Borrowing
Structs & Enums
Tratamento de erros
Coleções
Módulos e Pacotes
Traits
Generics
Lifetimes
Iterators & Closures
Smart Pointers
Concurrency Basics
async/await
Testing
Cargo & Ecosystem
Pattern Matching
Macros
Serde e serialização
Unsafe Rust
Traits avançados
Lifetimes Avançados
Type System
Tokio & Async I/O
Otimização de Desempenho
Web Frameworks
Database Integration
Padrões de design em Rust
Domine Rust para sua proxima entrevista
Acesse todas as perguntas, flashcards, testes tecnicos, exercicios de code review e simuladores de entrevista.
Comece gratis