好了好了,说点正题吧。
楼主说把内存理解为一维数组是有道理的。
以下内容只针对x86平台windows系统:
在16位时代,内存是分段存取的,也就是说给定一个指针,如果不指明所在段的话,是不能映射到物理内存的,所以这时的内存空间看起来像一个不连续的二维数组;
在32位时代,内存采用平坦模式,这时的指针的值就可以完全代表一个有效的地址了,内存空间也是一顺到底了,方便了程序的编写。
所以如果要给这4GB的空间指定头和尾的话,头=指针最小值0x0,尾=指针最大值0xffffffff。
不过在32位windows中,高2GB的内存空间为内核模式内存,用户模式代码不能访问。