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 voidacquire(void *ptr, std::size_t offset, std::size_t size)
virtual void *allocate(std::size_t size, Qul::PlatformInterface::MemoryAllocator::UsagePattern usagePattern = WriteRarely)
virtual voidfree(void *ptr)
virtual void *reallocate(void *ptr, std::size_t size)
virtual voidrelease(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::Default0大分配的默认类型。
Qul::PlatformInterface::MemoryAllocator::Image1用于存储使用 Qul::Image API 创建的图像的内存分配。
Qul::PlatformInterface::MemoryAllocator::TextCache2用于文本缓存的内存分配,该缓存将多个字形存储在单个图像中,以避免绘制调用开销。
Qul::PlatformInterface::MemoryAllocator::DefaultPreload3启动时从闪存复制到RAM的资源内存分配
Qul::PlatformInterface::MemoryAllocator::SparkCache4如果设置了MCU.Config.fontCacheSize,则为 Monotype Spark 字体引擎预分配缓存缓冲区。
Qul::PlatformInterface::MemoryAllocator::SparkHeap5如果设置了 MCU.Config.fontHeapSize,则为 Monotype Spark 字体引擎预分配堆缓冲区。
Qul::PlatformInterface::MemoryAllocator::QmlDynamicObjects6Loader、ListView、Repeater 等动态创建的对象的内存分配。不调用此类型的数据的获取和释放方法。
Qul::PlatformInterface::MemoryAllocator::Custom128此枚举值和更高的枚举值保留用于特定平台的内存区域。

枚举 MemoryAllocator::UsagePattern

此枚举指定如何使用分配的内存。

常量描述
Qul::PlatformInterface::MemoryAllocator::WriteOnce0只对分配写入一次。
Qul::PlatformInterface::MemoryAllocator::WriteRarely1分配的写入次数少于读取次数。
Qul::PlatformInterface::MemoryAllocator::WriteFrequently2分配的写入次数多于读取次数。

成员函数文档

[virtual] void MemoryAllocator::acquire(void *ptr, std::size_t offset, std::size_t size)

获取对由 allocate 分配的内存块写入访问。

ptr 是要访问的内存块指针。必须由 allocatereallocate 返回。

offset 是将被写入的内存范围,size 是内存范围的大小。

在写入内存之后,必须使用相同的参数调用 release

默认实现不做任何操作。

另请参阅 allocaterelease

[virtual] void *MemoryAllocator::allocate(std::size_t size, Qul::PlatformInterface::MemoryAllocator::UsagePattern usagePattern = WriteRarely)

分配一片内存。

此方法分配具有给定 size 的大小和预期使用模式 usagePattern 的内存。

在写入分配的内存之前必须调用 acquire

默认实现使用 Qul::Platform::qul_malloc

另请参阅 freereallocate

[virtual] void MemoryAllocator::free(void *ptr)

释放由 allocate 分配的内存块。

ptr 是要释放的内存块指针。

默认实现使用 Qul::Platform::qul_free

另请参阅allocatereallocate.

[virtual] void *MemoryAllocator::reallocate(void *ptr, std::size_t size)

尝试调整使用 allocate 分配的内存块的大小。

ptr 是之前分配的内存块的指针,而 size(以字节为单位)是新内存块的大小。

如果 ptrNULL,则相当于使用给定 size 和默认使用模式调用 allocate

如果没有足够的内存来满足请求,则返回 NULL。在这种情况下,ptr 不会被释放。

默认实现使用 Qul::Platform::qul_realloc

另请参阅allocatefree.

[virtual] void MemoryAllocator::release(void *ptr, std::size_t offset, std::size_t size)

释放使用 acquire 获取的写访问权限。

ptr 是要访问的内存块指针。必须由 allocatereallocate 返回。

offset 是将被写入的内存范围,size 是内存范围的大小。

默认实现不做任何操作。

另请参阅acquire.

在特定 Qt 许可证下可用。
了解更多信息。