C
MemoryAllocator 类
class Qul::PlatformInterface::MemoryAllocator这个类提供了一个内存分配的抽象接口。更多...
头文件 | #include <platforminterface/memoryallocator.h> |
自从 | Qt Quick Ultralite (平台) 1.9 |
公共类型
枚举 | AllocationType { Default, Image, TextCache, DefaultPreload, SparkCache, …, Custom } |
枚举 | 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 等动态创建的对象的内存分配。不调用此类型的数据的获取和释放方法。 |
Qul::PlatformInterface::MemoryAllocator::Custom | 128 | 此枚举值和更高的枚举值保留用于特定平台的内存区域。 |
枚举 MemoryAllocator::UsagePattern
此枚举指定如何使用分配的内存。
常量 | 值 | 描述 |
---|---|---|
Qul::PlatformInterface::MemoryAllocator::WriteOnce | 0 | 只对分配写入一次。 |
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。
默认实现不做任何操作。
[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。
[virtual]
void MemoryAllocator::release(void *ptr, std::size_t offset, std::size_t size)
释放使用 acquire 获取的写访问权限。
ptr 是要访问的内存块指针。必须由 allocate 或 reallocate 返回。
offset 是将被写入的内存范围,size 是内存范围的大小。
默认实现不做任何操作。
另请参阅acquire.
在特定 Qt 许可证下可用。
了解更多信息。