
Memory Management
Stack と heap、allocator、Drop trait、RAII、Rc サイクルによるメモリリーク、Pin<T>
20 面接問題·
Senior
1Rust では、i32 や bool のようなプリミティブ型のローカル変数はどこに格納されますか?
1
Rust では、i32 や bool のようなプリミティブ型のローカル変数はどこに格納されますか?
回答
プリミティブ型のローカル変数は stack に格納されます。stack は LIFO(Last In, First Out)の原則で動作するため、非常に高速な確保と解放が可能です。プリミティブ型はコンパイル時にサイズが分かっているため、コンパイラは現在の関数の stack frame に必要な領域を確保できます。
2単一の所有者を持つ値を heap に確保するには、どの smart pointer を使うべきですか?
2
単一の所有者を持つ値を heap に確保するには、どの smart pointer を使うべきですか?
回答
Box<T> は heap にデータを確保するための最もシンプルな smart pointer です。単一の所有権を保証し、Box が scope を抜けると自動的にメモリを解放します。Box は、コンパイル時にサイズが不明な型、stack 上にコピーしたくない大きな構造体、または再帰的な型に役立ちます。
3Rust における RAII(Resource Acquisition Is Initialization)パターンとは何ですか?
3
Rust における RAII(Resource Acquisition Is Initialization)パターンとは何ですか?
回答
RAII は、リソース(メモリ、ファイル、コネクション)をオブジェクトの生成時に取得し、破棄時に自動的に解放するパターンです。Rust では、値がスコープを抜けるときに自動的に呼び出される Drop トレイトを通じてこれが行われます。このパターンによって、どのリソースも忘れられることがなくなり、メモリリークを防ぎます。
4
Rust では Drop トレイトはいつ自動的に呼び出されますか?
5
Rust で Rc<T> を使ってメモリリーク(memory leak)を引き起こすにはどうすればよいですか?
+17 面接問題
その他のRust面接トピック
Rustの基礎
Junior
25問Ownership & Borrowing
Junior
22問Structs & Enums
Junior
20問エラー処理
Junior
18問コレクション
Junior
20問モジュールとパッケージ
Junior
18問Traits
Mid-Level
22問Generics
Mid-Level
20問Lifetimes
Mid-Level
20問Iterators & Closures
Mid-Level
22問Smart Pointers
Mid-Level
22問Concurrency Basics
Mid-Level
20問async/await
Mid-Level
22問Testing
Mid-Level
18問Cargo & Ecosystem
Mid-Level
18問Pattern Matching
Mid-Level
18問マクロ
Mid-Level
20問Serde とシリアライゼーション
Mid-Level
20問Unsafe Rust
Senior
20問高度なトレイト
Senior
22問高度な lifetime
Senior
20問Type System
Senior
20問Tokio & Async I/O
Senior
22問パフォーマンス最適化
Senior
20問Web Frameworks
Senior
22問Database Integration
Senior
20問Rust デザインパターン
Senior
20問