目次
STLコンテナ全般に適用できる汎用的なアロケーターは難易度が高いため、STLコンテナのアロケーターについては実験的なものとお考えください。
カスタムアロケーターの設計技術は C++ (魔界系黒魔術)の中でも難易度は最高峰です…
なぜ高難易度かはやってみるとわかりますよ…
バグでまくり、リークしまくり… 強固な精神力がないとやってられないですね。
良い子はアロケーターだけは絶対に自作してはならないと筆者は考えますが、読者には C++ のハッカーになる野望をお持ちの方も少なからずいるでしょうから、あえて何も言いません。
まず通常必要なアロケーターで必要な 2 つの要件です。
STLコンテナに使えそうなアロケーターを考える人もいるにはいますが、ヒープ領域のためのアロケーター難しくはないものの単なる配列の延長線上として std::vector 向けのアロケーターだけでなく std::map まで含めた汎用アロケーターとなると凄まじく難易度が上がります。
言うまでもなく汎用ではないので、以下のような点もできて当然ってことです。
スタック領域の割当はプレースメント new を使えば良いのですが、実用性を与えるにはメモリープールを実装する必要があります。
ガーベッジコレクターにはスマートポインターを使うのが正攻法なので、その流れでスマートポインターのAPIに準拠したデリーターもついでに作る必要があります。
どれも一筋縄ではいきませんが、一つ一つ課題をクリアしていけば決して難しいものではないです。
では作って行きましょう。
Copyright 2018-2019, by Masaki Komatsu