Meh*_*dad 4 c++ linux memory allocation granularity
dwAllocationGranularityLinux 中相当于什么?在 Windows 中,它的定义为:
可以分配虚拟内存的起始地址的粒度。
请注意,这与物理页的粒度不同。
(在 Windows 上,x86 上的虚拟地址粒度为 64 KiB,而页面大小当然为 4 KiB。)PAGE_SIZE
Linux 上 VirtualAlloc 最接近的等效项是 mmap,它与 VirtualAlloc 一样,允许您指定已分配内存的所需分配目标地址。在 Windows 上,该地址必须在分配粒度上对齐。在 Linux 上,我引用 mmap 手册页:
如果addr不为NULL,那么内核将其作为放置映射位置的提示;在 Linux 上,映射将在附近的页面边界处创建。
据我所知,不存在分配粒度高于系统页面大小的情况,因此您应该能够安全地使用 PAGE_SIZE 作为替代品。