以VirttualAlloc函数为例:
一、 当lpAddress参数为NULL时,系统会根据分配粒度来确定分配区域的位置。分配粒度是指操作系统中用于内存管理的最小单位,通常为4KB或8KB。可通过GetSystemInfo 函数来获取。在本人的windows10系统中,检测出系统的分配粒度为65536(即64KB)。这意味着,分配的内存区域的起始地址会是65536的倍数。
二、当lpAddress参数为NULL时,dwSize参数会向上舍入到下一页边界。这意味着,如果申请内存少于1页的大小,将回分配完整的1页,如超出一页而不到两页,则两页都会被分配。
Linux下的mmap函数特性类似于virtualAlloc。