如果我有一个特殊的硬件单元,其中有一些存储器连接到计算机并且是内存映射的,那么 它的存储空间可以在地址范围0x55500000 - 0x555fffff中访问,如何将此硬件单元连接到 我的C ++程序,以便在这个硬件单元中分配动态内存,而不是在我的计算机内存中? 我需要实现一个具有以下功能的类。
void * allocMemoryInMyHardware(int numberOfBytesToAllocate);
返回指向已分配内存块的指针,如果无法分配,则返回null。
答案 0 :(得分:2)
您需要编写自己的分配器。在互联网上搜索示例代码并进行调整。如果您有简单的要求,可以在2-4小时内从头开始编写基本分配器。如果您的平台没有虚拟内存管理且代码可以直接访问您的地址范围,则此方法将起作用。否则,您需要深入了解平台上的驱动程序开发。
典型的策略是为每个已分配的单元添加标头,并为可用内存区域组织双链表。 NT堆以类似的方式工作。