Linux/GCC 中 mmap() 和 memalign() 的组合?
Combination of mmap() and memalign() in Linux/GCC?
我需要在我的 C++ 程序中分配一些内存块,有两个要求。首先,分配的地址需要在块大小上对齐,其次,它需要分配在 4GB 虚拟地址以下 space。
memalign()
帮助我满足第一个要求,mmap()
帮助我满足第二个要求,因为我可以将 MAP_32BIT
标志作为参数传递。但是是否有可能以某种方式将它们组合成一个简单的解决方案? (当然,从技术上讲,我可以将 mmap()
用于我想要的任何地址,但该解决方案可能不太便携)。
只需 mmap 一个块(首先四舍五入到下一个幂)是您需要的两倍大,然后 munmap 不需要的块。
我需要在我的 C++ 程序中分配一些内存块,有两个要求。首先,分配的地址需要在块大小上对齐,其次,它需要分配在 4GB 虚拟地址以下 space。
memalign()
帮助我满足第一个要求,mmap()
帮助我满足第二个要求,因为我可以将 MAP_32BIT
标志作为参数传递。但是是否有可能以某种方式将它们组合成一个简单的解决方案? (当然,从技术上讲,我可以将 mmap()
用于我想要的任何地址,但该解决方案可能不太便携)。
只需 mmap 一个块(首先四舍五入到下一个幂)是您需要的两倍大,然后 munmap 不需要的块。