パート X. ヒープ領域のアドレスに割り当て

目次

91. ヒープ領域のアドレス
92. malloc を使ってヒープに割り当て
93. カスタムヒープアロケーター
94. static オブジェクトはヒープっぽい領域に割り当てられるはず?
95. アロケーターをスタティックメンバーにするとどうなるのか?

 placement new (または配置 new )でスタック領域でなくてヒープ領域のアドレスに割り当てると不都合が出そうですが、アドレス境界を考えるか、ものすごい遠回しなとんでも技法を使えば可能です。

 (´・ω・`)

 具体的には 2 つの方式があります。

  1. std::malloc で確保したアドレス領域で placement new をする
  2. static で宣言したオブジェクトのアドレス領域内で placement new をする

 1 番目は std::malloc でヒープ領域を確保してから、プレースメント new でオブジェクトを構成します。

 この方式では割り当ては 1 回だけにして、割り当てられた領域を再利用します。

 2 番目は static の宣言によってプログラムの実行の開始時点で割り当てられたヒープ領域のアドレス上でオブジェクトを構成・破壊していきます。

 まあ static を使う方式は後で説明しますんで今は意味不明で大丈夫です。

Copyright 2018-2019, by Masaki Komatsu