1

如果我有一个带有一些存储的特殊硬件单元连接到计算机并进行内存映射,以便在地址范围 0x55500000 – 0x555fffff 中访问它的存储,我如何将此硬件单元连接到我的 C++ 程序以便动态内存是在这个硬件单元中分配的,而不是在我电脑的内存中?我需要实现一个具有以下功能的类。

void * allocMemoryInMyHardware(int numberOfBytesToAllocate);

它返回一个指向已分配内存块的指针,如果无法分配,则返回 null。

4

1 回答 1

2

您需要编写自己的分配器。在互联网上搜索示例代码并对其进行调整。如果您有简单的需求,可以在 2-4 小时内从头开始编写基本分配器。如果您的平台没有虚拟内存管理并且代码可以直接访问您的地址范围,则此方法将起作用。否则,您需要深入研究平台上的驱动程序开发。

典型的策略是为每个分配的单元添加标题,并为空闲内存区域组织一个双链表。NT 堆以类似的方式工作。

于 2012-07-12T07:48:05.237 回答