英語版
このページの英語版を見る

std.experimental.allocator.showcase

与えられたコンポーネントを使った、典型的で有用なビルド済みアロケータのコレクション。 コンポーネントのコレクションである。ユーザーコードは通常このモジュールをインポートし、その機能を使用する。 または個々のヒープビルディングブロックをインポートして組み立てる。
template StackFront(size_t stackSize, Allocator = GCAllocator)
stackSize バイトまでスタック割り当てを使用し、その後は にフォールバックするアロケータである。 Allocatorにフォールバックする。として定義されている:
alias StackFront(size_t stackSize, Allocator) =
    FallbackAllocator!(
        InSituRegion!(stackSize, Allocator.alignment,
            hasMember!(Allocator, "deallocate")
                ? Yes.defineDeallocate
                : No.defineDeallocate),
        Allocator);
stackSize 、常に妥協の産物である。サイズが小さすぎると、数回の割り当てで スタック・ストレージを使い果たしてしまう。 バックアップアロケータを超える利益はない。サイズが大きすぎると、スレッドが消費するスタックが増える。 によって消費されるスタックが増加し、スタックの冷たい部分を探索するため、結果的に悪くなる可能性がある。
Examples:
StackFront!4096 a;
auto b = a.allocate(4000);
writeln(b.length); // 4000
auto c = a.allocate(4000);
writeln(c.length); // 4000
a.deallocate(b);
a.deallocate(c);
auto mmapRegionList(size_t bytesPerRegion);
Regions のスケーラブルなAllocatorList を作成する。 bytesPerRegionバイトを持つ。アロケーションは非常に高速である。このアロケータは deallocate を提供しないが、デストラクタですべての領域を解放する。このアロケータは 短時間のバッチアプリケーションで、メモリ不足にならないことを期待する場合に推奨される。
Examples:
auto alloc = mmapRegionList(1024 * 1024);
const b = alloc.allocate(100);
writeln(b.length); // 100