我需要在我的 C++ 程序中分配一些内存块,有两个要求。首先,分配的地址需要与 block 大小对齐,其次需要分配低于 4GB 的虚拟地址空间。
memalign()
帮助我满足第一个要求,mmap()
帮助我满足第二个要求,因为我可以传递 MAP_32BIT
标志作为参数。但是否有可能以某种方式将它们结合在一个简单的解决方案中? (从技术上讲,我当然可以将 mmap()
与我想要的任何地址一起使用,但该解决方案可能不太便携)。
最佳答案
只需 mmap 一个大小为您需要的两倍(首先四舍五入到下一个幂)的 block ,然后 munmap 不需要的 block 。
关于c++ - Linux/GCC 中 mmap() 和 memalign() 的组合?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33871411/