英語版
このページの英語版を見る
std.experimental.allocator.building_blocks.bucketizer
- struct
Bucketizer(Allocator, size_t min, size_t max, size_t step); - A
Bucketizerのサイズの割り当てを処理するために個別のアロケータを使用する。 [min, min + step - 1],[min + step, min + 2 * step - 1] 、 [min + 2 * step, min + 3 * step - 1] ...,[max - step + 1, max].Bucketizerは、固定サイズのアロケータ配列を保持し、適切に呼び出しをディスパッチする。 を適切にディスパッチする。配列のサイズは(max + 1 - min) / step である。 であり、正確な除算でなければならない。 min より小さいサイズ、またはmax より大きいサイズの割り当ては不正である。 である。Bucketizer.これらを個別に処理するには、Segregator が役に立つかもしれない。Examples:import std.algorithm.comparison : max; import std.experimental.allocator.building_blocks.allocator_list : AllocatorList; import std.experimental.allocator.building_blocks.free_list : FreeList; import std.experimental.allocator.building_blocks.region : Region; import std.experimental.allocator.common : unbounded; import std.experimental.allocator.mallocator : Mallocator; import std.typecons : Ternary; Bucketizer!( FreeList!( AllocatorList!( (size_t n) => Region!Mallocator(max(n, 1024 * 1024))), 0, unbounded), 65, 512, 64) a; auto b = a.allocate(400); writeln(b.length); // 400 writeln(a.owns(b)); // Ternary.yes a.deallocate(b);
- Allocator[(max + 1 - min) / step]
buckets; - アロケーターの配列は、初期化や検査などのために公開されている。 検査などに利用できる。
- enum uint
alignment; - 提供されるアラインメントは Allocator.
alignment. - const pure nothrow @nogc @safe size_t
goodAllocSize(size_tbytes); - と同じである。
bytesである。 - void[]
allocate(size_tbytes); - buckets 、いずれかのアロケータに呼び出しを向ける。
- void[]
alignedAllocate(size_tbytes, uintalignment); - 要求された
bytes指定されたalignment. 呼び出しをbuckets アロケータのいずれかに向ける。以下の場合のみ定義される。 Allocator が定義されている場合のみ定義される。alignedAllocate. - bool
expand(ref void[]b, size_tdelta); - このメソッドは、それぞれのバケット範囲内での拡張を許可する。このメソッドは と
b.lengthとb.length + delta の両方が [min + k * step, min + (k + 1) * step - 1]. - bool
reallocate(ref void[]b, size_tsize); - このメソッドは、それぞれのバケツ範囲内での再配置を許す。もし
b.lengthとsizeが[min + k * step, min + (k + 1) * step - 1] の範囲にある場合、再配置が行われる。そうでなければ を含む再配置が試行される。 - bool
alignedReallocate(ref void[]b, size_tsize, uinta); - reallocate に似ているが、アライメントがある。以下の場合にのみ定義される。Allocator を定義する。
alignedReallocate. - Ternary
owns(void[]b); - Allocator で定義されている場合にのみ定義される。
owns.のオーナーを見つけ、そのオーナーに呼び出しを転送する。bのオーナーを見つけ、そのオーナーに呼び出しを転送する。 - bool
deallocate(void[]b); - このメソッドは、Allocator で
deallocate. - bool
deallocateAll(); - このメソッドは、関係するすべてのアロケータが deallocateAll を定義している場合にのみ定義され、各バケツに対して順番に呼び出される。true すべての を返す。
- Ternary
resolveInternalPointer(const void*p, ref void[]result); - このメソッドは、関係するすべてのロケータが resolveInternalPointer を定義し、各バケツに対して順番に試行する場合にのみ定義される。
Copyright © 1999-2025 by the D Language Foundation
DEEPL APIにより翻訳、ところどころ修正。
このページの最新版(英語)
このページの原文(英語)
翻訳時のdmdのバージョン: 2.108.0
サイト全体のドキュメントのdmdのバージョン: 2.109.1
最新のdmdのバージョン: 2.111.0 ダウンロード
翻訳日付:
HTML生成日時:
編集者: dokutoku