在包含各种大小的内存中,有几个Partition
静态分配的内存,在编译时是已知的。chunks
每个分区都有chunks
不同的大小。Partition
实现IPartition
接口。指针IPartition *
在 C 样式数组中组织,其中idx
是该数组的索引,范围为0..nPartitions
.
在我的自定义operator new(size_t size)
实现中,我将使用上述概念返回一个适当大小的内存块,任何大小的类型都适合。明显的要求是块大小必须等于或大于类型的大小。
目标/任务/问题:
我需要设计一个函数,该函数constexpr unsigned int func( size_t size )
采用size
要分配的对象并将索引返回到指针idx
数组,IPartition *
该指针指向具有适当块的“正确”分区size
。
为了使事情变得更复杂,必须花费一个恒定的时间来使用内存池确定性func()
来保持整个内存分配。
整件事都指向我,std::unordered_map
但目标系统是资源有限的小型 MCU。也许解决方案可能是一个哈希表,其中在编译时计算哈希(分区数和块大小在编译时已知),我不知道......
如果有人可以帮助我遵循最佳方式,我将非常高兴...
非常感谢任何愿意提供帮助的人!