我需要在C ++程序中分配一些内存块,但有两个要求。首先,分配的地址需要在块大小上对齐,其次需要在4GB的虚拟地址空间下分配。
memalign()
帮助我完成第一个要求,mmap()
帮助我完成第二个要求,因为我可以将MAP_32BIT
标记作为参数传递。但有可能以某种方式将它们组合在一个简单的解决方案中吗? (从技术上讲,我当然可以将mmap()
用于我想要的任何地址,但解决方案可能不会非常便携。
答案 0 :(得分:2)
只需将一块(首先四舍五入到下一个幂)的块映射到你需要的两倍,然后将不需要的块映射到其中。