C
Qul::PlatformInterface::MemoryAllocator Class
class Qul::PlatformInterface::MemoryAllocatorこのクラスは、メモリ割り当てのための抽象インターフェースを提供します。詳細...
| Header: | #include <platforminterface/memoryallocator.h> |
| Since: | Qt Quick Ultralite (Platform) 1.9 |
パブリック型
| enum | AllocationType { Default, Image, TextCache, DefaultPreload, SparkCache, …, Custom } |
| enum | UsagePattern { WriteOnce, WriteRarely, WriteFrequently } |
パブリック関数
| virtual void | acquire(void *ptr, std::size_t offset, std::size_t size) |
| virtual void * | allocate(std::size_t size, Qul::PlatformInterface::MemoryAllocator::UsagePattern usagePattern = WriteRarely) |
| virtual void | free(void *ptr) |
| virtual void * | reallocate(void *ptr, std::size_t size) |
| virtual void | release(void *ptr, std::size_t offset, std::size_t size) |
詳細な説明
このクラスは、サイズがかなり大きくなる可能性のある特定の種類のメモリ割り当てに使用されます。通常、プラットフォームでは、VRAM や SDRAM などのカスタムメモリ領域に、このようなメモリを割り当てることを好む場合があります。
Qt Quick Ultralite では、小規模な割り当てにはQul::Platform::qul_malloc および関連する API を使用します。
メンバ型のドキュメント
enum MemoryAllocator::AllocationType
この列挙型は、メモリ割り当てのタイプを指定します。
| 定数 | 値 | 説明 |
|---|---|---|
Qul::PlatformInterface::MemoryAllocator::Default | 0 | 大規模な割り当てのデフォルトのタイプ。 |
Qul::PlatformInterface::MemoryAllocator::Image | 1 | Qul::Image API を使用して作成された画像を格納するための、事前に割り当てられたメモリバッファ。 |
Qul::PlatformInterface::MemoryAllocator::TextCache | 2 | テキストキャッシュ用に事前に割り当てられたキャッシュバッファ。 |
Qul::PlatformInterface::MemoryAllocator::DefaultPreload | 3 | 起動時にフラッシュからRAMへコピーされるリソース用のメモリ割り当て |
Qul::PlatformInterface::MemoryAllocator::SparkCache | 4 | MCU.Config.fontCacheSize が設定されている場合、Monotype Sparkフォントエンジン用に事前割り当てされたキャッシュバッファ。 |
Qul::PlatformInterface::MemoryAllocator::SparkHeap | 5 | MCU.Config.fontHeapSize が設定されている場合、Monotype Sparkフォントエンジン用に事前割り当てされたヒープバッファ。 |
Qul::PlatformInterface::MemoryAllocator::QmlDynamicObjects | 6 | Loader、ListView 、Repeater などによって動的に作成されるオブジェクト用のメモリ割り当て。このタイプでは、Acquire および release メソッドは呼び出されません。 |
Qul::PlatformInterface::MemoryAllocator::GlyphLayoutCache | 7 | MCU.Config.glyphsLayoutCacheSize を通じて設定される、グリフレイアウトデータ用の事前割り当て済みメモリバッファ。このタイプでは、Acquire および release メソッドは呼び出されません。 |
Qul::PlatformInterface::MemoryAllocator::Custom | 128 | この値およびそれ以上の列挙値は、プラットフォーム固有のメモリ領域用に予約されています。 |
enum MemoryAllocator::UsagePattern
この列挙型は、割り当てられたメモリの使用方法を指定します。
| 定数 | 値 | 説明 |
|---|---|---|
Qul::PlatformInterface::MemoryAllocator::WriteOnce | 0 | 割り当てられたメモリへの書き込みは 1 回のみ行われます。 |
Qul::PlatformInterface::MemoryAllocator::WriteRarely | 1 | 割り当てられたメモリへの書き込みは、読み取りよりも頻度が低くなります。 |
Qul::PlatformInterface::MemoryAllocator::WriteFrequently | 2 | 割り当てへの書き込みは、読み取りよりも頻繁に行われます。 |
メンバ関数のドキュメント
[virtual] void MemoryAllocator::acquire(void *ptr, std::size_t offset, std::size_t size)
allocate によって割り当てられたメモリブロックへの書き込みアクセス権を取得します。
ptr は、アクセス対象のメモリブロックへのポインタです。これは、allocate またはreallocate によって返されるものでなければなりません。
offset は、書き込み対象となる割り当てに使用されたメモリ範囲であり、size は、そのメモリ範囲のサイズです。
メモリへの書き込みが完了した後、同じパラメータでrelease を呼び出す必要があります。
デフォルトの実装では何も行われません。
「 allocate 」および「release 」も参照してください 。
[virtual] void *MemoryAllocator::allocate(std::size_t size, Qul::PlatformInterface::MemoryAllocator::UsagePattern usagePattern = WriteRarely)
メモリのチャンクを割り当てます。
このメソッドは、指定されたsize のメモリを割り当てます。想定される使用パターンはusagePattern です。
acquire 割り当てられたメモリへの書き込みを行う前に、このメソッドを呼び出す必要があります。
デフォルトの実装では、Qul::Platform::qul_malloc を使用します。
free およびreallocateも参照してください 。
[virtual] void MemoryAllocator::free(void *ptr)
allocate によって割り当てられたメモリブロックを解放します。
ptr は、解放対象のメモリブロックへのポインタです。
デフォルトの実装では、Qul::Platform::qul_free が使用されます。
allocate およびreallocateも参照してください 。
[virtual] void *MemoryAllocator::reallocate(void *ptr, std::size_t size)
allocate で割り当てられたメモリブロックのサイズ変更を試みます。
ptr は以前に割り当てられたメモリブロックへのポインタであり、size (バイト単位)はメモリブロックの新しいサイズです。
ptr がNULL の場合、これは、指定されたsize とデフォルトの使用パターンを用いたallocate の呼び出しと同等です。
要求を満たすのに十分なメモリがない場合、NULL を返します。この場合、ptr は解放されません。
デフォルトの実装では、Qul::Platform::qul_realloc を使用します。
「 allocate 」および「free 」も参照してください 。
[virtual] void MemoryAllocator::release(void *ptr, std::size_t offset, std::size_t size)
acquire を使用して取得した書き込みアクセス権を解放します。
ptr は、アクセス対象のメモリブロックへのポインタです。これは、allocate またはreallocate によって返される必要があります。
offset は、書き込み対象となる割り当てに使用されたメモリ範囲であり、size は、そのメモリ範囲のサイズです。
デフォルトの実装では何も行われません。
acquireも参照してください 。
特定の Qt ライセンスの下で利用可能です。
詳細はこちらをご覧ください。