Rust

Memory Management

Stack と heap、allocator、Drop trait、RAII、Rc サイクルによるメモリリーク、Pin<T>

20 面接問題·
Senior
1

Rust では、i32 や bool のようなプリミティブ型のローカル変数はどこに格納されますか?

回答

プリミティブ型のローカル変数は stack に格納されます。stack は LIFO(Last In, First Out)の原則で動作するため、非常に高速な確保と解放が可能です。プリミティブ型はコンパイル時にサイズが分かっているため、コンパイラは現在の関数の stack frame に必要な領域を確保できます。

2

単一の所有者を持つ値を heap に確保するには、どの smart pointer を使うべきですか?

回答

Box<T> は heap にデータを確保するための最もシンプルな smart pointer です。単一の所有権を保証し、Box が scope を抜けると自動的にメモリを解放します。Box は、コンパイル時にサイズが不明な型、stack 上にコピーしたくない大きな構造体、または再帰的な型に役立ちます。

3

Rust における RAII(Resource Acquisition Is Initialization)パターンとは何ですか?

回答

RAII は、リソース(メモリ、ファイル、コネクション)をオブジェクトの生成時に取得し、破棄時に自動的に解放するパターンです。Rust では、値がスコープを抜けるときに自動的に呼び出される Drop トレイトを通じてこれが行われます。このパターンによって、どのリソースも忘れられることがなくなり、メモリリークを防ぎます。

4

Rust では Drop トレイトはいつ自動的に呼び出されますか?

5

Rust で Rc<T> を使ってメモリリーク(memory leak)を引き起こすにはどうすればよいですか?

+17 面接問題

次の面接に向けてRustをマスター

すべての問題、flashcards、技術テスト、コードレビュー演習、面接シミュレーターにアクセス。

無料で始める