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

Combination of mmap() and memalign() in Linux/GCC?

本文关键字:memalign 组合 mmap Linux GCC      更新时间:2023-10-16

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

memalign()帮助我满足第一个需求,mmap()帮助我满足第二个需求,因为我可以将MAP_32BIT标志作为参数传递。但是,有可能以某种方式将两者结合在一个简单的解决方案中吗?(从技术上讲,我当然可以将mmap()与我想要的任何地址一起使用,但解决方案可能不太便携)。

只需对一个(先四舍五入到的次幂)是所需大小两倍的块进行mmap,然后对不需要的块进行munmap。