Linux / GCC中mmap()和memalign()的组合?

时间:2015-11-23 12:44:24

标签: c++ c gcc memory-management linux-kernel

我需要在C ++程序中分配一些内存块,但有两个要求。首先,分配的地址需要在块大小上对齐,其次需要在4GB的虚拟地址空间下分配。

memalign()帮助我完成第一个要求,mmap()帮助我完成第二个要求,因为我可以将MAP_32BIT标记作为参数传递。但有可能以某种方式将它们组合在一个简单的解决方案中吗? (从技术上讲,我当然可以将mmap()用于我想要的任何地址,但解决方案可能不会非常便携。

1 个答案:

答案 0 :(得分:2)

只需将一块(首先四舍五入到下一个幂)的块映射到你需要的两倍,然后将不需要的块映射到其中。