英語版
このページの英語版を見る
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-2024 by the D Language Foundation
DEEPL APIにより翻訳、ところどころ修正。
このページの最新版(英語)
このページの原文(英語)
翻訳時のdmdのバージョン: 2.108.0
ドキュメントのdmdのバージョン: 2.109.1
翻訳日付 :
HTML生成日時:
編集者: dokutoku