本文へスキップ

所有権システムとは?

しょゆうけんしすてむ

プログラミング言語Rust採用するメモリ管理の仕組みで、コンパイル時に値の「所有者」を追跡しメモリ安全性を保証する概念です。

所有権システム(Ownership System)とは、プログラミング言語Rustにおけるメモリ管理の根幹をなす仕組みです。ガベージコレクタを使わずに、コンパイル時の静的解析だけでメモリの安全な確保と解放を保証します。

所有権システムの核となるルールは次の3つです。

  • Rustの値にはただ一つの所有者(owner)が存在する
  • 所有者がスコープを外れた瞬間、値は自動的に解放(drop)される
  • 所有権はムーブ(move)によって別の変数に移譲でき、元の変数は使用不能になる

値を所有権なしに参照するための借用(borrowing)という概念もあり、不変参照は複数同時に持てますが、可変参照は同時に1つしか持てません。これにより、データ競合やダングリングポインタといったバグをコンパイル時に検出できます。

この仕組みはC/C++のような手動メモリ管理の危険性と、JavaやPythonのようなガベージコレクタのオーバーヘッドを同時に解決するアプローチとして設計されました。システムプログラミングやWebAssembly、組み込みシステムなど、高いパフォーマンスとメモリ安全性が同時に求められる分野でRustが注目される大きな理由の一つです。

使い方・例文

Rustで変数aから変数bへ値をムーブすると、以降aを使おうとするとコンパイルエラーになります。これが所有権システムの典型的な挙動で、実行時バグの代わりにコンパイル時エラーとして問題を検出します。

この用語をシェア

𝕏 でポスト LINE

最終更新:

関連用語