英語版
このページの英語版を見る
std.experimental.allocator.common
std.experimental.allocator のユーティリティと補助的な成果物。
このモジュールは直接使用されるべきではない。
stdのより適切な部分に移行される。
Authors:
Andrei Alexandrescu, Timon Gehr (Ternary)
- enum auto
isAllocator
(A); - A がアロケータであれば、true である。Examples:
import std.experimental.allocator.building_blocks.null_allocator : NullAllocator; import std.experimental.allocator.mallocator : Mallocator; import std.experimental.allocator.gc_allocator : GCAllocator; import std.experimental.allocator.mmap_allocator : MmapAllocator; static assert(isAllocator!NullAllocator); static assert(isAllocator!Mallocator); static assert(isAllocator!GCAllocator); static assert(isAllocator!MmapAllocator); static assert(!isAllocator!int);
- template
stateSize
(T) - 型のオブジェクトを保持するために割り当てが必要な状態のサイズをバイト単位で返す。 T 。
stateSize
!Tは、structの場合はゼロである。 はゼロである。 - enum auto
hasStaticallyKnownAlignment
(Allocator); - Allocator のアライメントがコンパイル時に既知の場合はtrue を返す; そうでない場合はfalse を返す。
- enum ulong
chooseAtRuntime
; chooseAtRuntime
はsize_t 型のコンパイル時定数である。 型のコンパイル時定数である。 を実行時に延期することを意味する。例えば、BitmappedBlock!(Allocator, 4096) (詳細は後述する。 はブロック・サイズが4096バイトのブロック・アロケータを定義している。 BitmappedBlock!(Allocator, chooseAtRuntime) フィールドを持つブロック・アロケータを定義している。 フィールドを持つブロック・アロケータを定義している。- enum ulong
unbounded
; unbounded
はsize_t 型のコンパイル時定数である。 型のコンパイル時定数である。 である。例:Freelist (詳細は後述する)は、フリー・ファイルの数を制限する maxNodes パラメータは、フリーリストの項目数を制限する。もしunbounded
maxNodesが渡された場合、制限はなく、ノード数のチェックも行われない。 をチェックしない。- enum uint
platformAlignment
; - 現在のプラットフォーム上で、どのようなDオブジェクトのアロケーションにも対応することが保証されているアライメントである。 アラインメントである。
- size_t
goodAllocSize
(A)(auto ref Aa
, size_tn
); - デフォルトの良好なサイズの割り当ては、以下のように推論される。
n
に切り上げられる。 のアライメントに切り上げられる。 - bool
reallocate
(Allocator)(ref Allocatora
, ref void[]b
, size_ts
); - デフォルトの
reallocate
関数は、まずexpand の使用を試みる。Allocator.expand が定義されていないか、false を返す、reallocate
を返す場合、適切なサイズの新しいメモリブロックを確保し、古いブロックから新しいブロックにデータをコピーする。 ブロックから新しいブロックにデータをコピーする。最後に、Allocator がdeallocate を定義している場合、reallocate はそれを使用して古いメモリ・ブロックを解放する。reallocate
を使おうとはしない。 Allocator.reallocate
たとえ が定義されていても使おうとしない。これは、アロケータが自身の の実装の中で内部的に使うことができる。reallocate
. - bool
alignedReallocate
(Allocator)(ref Allocatoralloc
, ref void[]b
, size_ts
, uinta
)
if (hasMember!(Allocator, "alignedAllocate")); - デフォルトの
alignedReallocate
関数は、まずexpand の使用を試みる。 Allocator.expand が定義されていないか、false を返した場合、alignedReallocate は適切なサイズの新しいメモリブロックを確保し、古いブロックから新しいブロックにデータをコピーする。 古いブロックから新しいブロックにデータをコピーする。最後にAllocator が定義されている場合、deallocate 、alignedReallocate
が定義されていれば、それを使って古いメモリ ブロックを解放する。alignedReallocate
が定義されていても、Allocator.reallocate を使おうとはしない。 を使用しようとしない。これは意図的なもので、アロケータが自分自身の実装の中で内部的に使うためである。 reallocateの実装内で使用できるようにするためである。 - string
forwardToMember
(stringmember
, string[]funs
...); - の各メソッドを
funs
(に転送する。member
.
Copyright © 1999-2024 by the D Language Foundation
DEEPL APIにより翻訳、ところどころ修正。
このページの最新版(英語)
このページの原文(英語)
翻訳時のdmdのバージョン: 2.108.0
ドキュメントのdmdのバージョン: 2.109.1
翻訳日付 :
HTML生成日時:
編集者: dokutoku