3

dwAllocationGranularityLinux中的等价物是什么?在 Windows 中,它被定义为:

可以分配虚拟内存的起始地址的粒度。

请注意,这物理页面的PAGE_SIZE粒度不同。 (在 Windows 上,x86 上的虚拟地址粒度是 64 KiB,而页面大小当然是 4 KiB。)

4

1 回答 1

4

Linux 上最接近 VirtualAlloc 的等价物是 mmap,它与 VirtualAlloc 类似,允许您指定已分配内存的所需分配目标地址。在 Windows 上,此地址必须在分配粒度上对齐。在 Linux 上,我引用 mmap 手册页:

如果 addr 不为 NULL,则内核将其作为关于在何处放置映射的提示;在 Linux 上,映射将在附近的页面边界处创建

据我所知,不存在分配粒度高于系统页面大小的情况,所以你应该可以放心地使用 PAGE_SIZE 作为替代。

于 2014-07-18T07:30:48.387 回答