alloc

allocを使うためには、グローバル(ヒープ)アロケータを実装しなければなりません。

XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

Speaker Notes

  • buddy_system_allocatorはサードパーティのクレートで、単純なバディシステムアロケータです。その他にも利用できるクレートはありますし、自前で実装したり、別のアロケータに自分のコードをフックすることも可能です。
  • パラメータ定数LockedHeapはアロケータの最大オーダを示します。この場合、2**32バイトの領域を確保することが可能です。
  • もし依存関係にあるクレートがallocに依存する場合、必ずバイナリファイルあたり一つだけのグローバルなアロケータが存在するようにしなければなりません。通常、これはトップレベルのバイナリを生成するクレートにより制御されます。
  • extern crate panic_halt as _ という部分は、panic_haltクレートを確実にリンクし、パニックハンドラを利用可能にするために必要です。
  • この例で示したコードはビルドできますが、エントリポイントがないので実行することはできません。