Listen

Description

第21章へようこそ。

今日のテーマは「Box」です。

前章でスタックとヒープという2つの領域を扱いました。

スタックは関数呼び出しに合わせて伸び縮みし、サイズがコンパイル時に決まるあたいを置く領域。

ヒープは関数の生存期間と独立に確保解放され、サイズが実行時に決まるあたいを置く領域。

StringやVecはこの2つの領域にまたがる型でした。

スタック側にポインタと長さと容量の3つを持ち、ヒープ側に実データを持つ。

ではStringのような「特定の中身に縛られた」二層構造ではなく、任意の型をヒープに置きたいときはどうするのか。

そのための型がBoxです。

今日はBoxの構造、Derefによる透過アクセス、Dropによる自動解放、そしてBoxが構造として必要になる場面を扱います。