windows的分配粒度是64k,为什么vc分配内存是连续的?
VC里面,用内存映射得到的地址是64k边界的。为什么普通的new/malloc分配内存的时候,不存在这样的边界限制,而是在和虚拟地址分配打交道的时候,有这样的限制?
char*p=new char;
char*q=new char;
printf("%p,%p\n",p,q);
打印出来的结果是release版本这两个指针地址相差0x10. debug版保留的多一些,相差0x30.
但是内存映射CreateFileMapping/MapViewOfFile每次得到的指针地址,相差64k的整数倍。
这是为什么呢?