1. 单个程序使用的最大的内存空间的大小收到内存指针的大小的限制,对于32位机,指针是4字节类型,最大标识4G的内存空间,所以32位机单个程序使用的内存空间不可能超过4G,实际上具体多少?我也不知道
2. 对于windows来讲,虽然好像每个程序都可以使用接近(可能差的比较远点儿)4G的内存空间,但是总的虚拟内存的大小也是有一个限制的,在“我的电脑”=》属性=》高级=》性能(设置)=》高级=》虚拟内存 这里可以设置,这里设置允许使用的磁盘空间的大小,虚拟内存的总大小是我们的物理内存和这里设置的总和。如果总和为5G, 则你的任务管理器里面的内存项最大为5G,当所有程序开辟的内存大于5G时,则开辟内存失败,系统提示“虚拟内存不足”。
3. 对于linux,好像没有处理指针的限制没有在开辟的时候做其他的限制,没有想windows上所谓的总的虚拟内存的限制,linux上的swap只是限制用于交换的磁盘空间的大小,但是并不用于限制是否开辟的内存超过了物理内存+swap的大小。
4. 我这里的测试都是使用的malloc函数,就是说,申请的内存实际上并没有真正使用这些内存,大概这就是“记账”的概念吧; 如果你用calloc函数来做这些测试,结果会不一样的,因为calloc是需要初始化内存的,和我想要证明的问题不符,所以不用。
5. linux的free命令说明的是物理内存和swap的使用情况,至于(某个)程序“想”使用(已经malloc,但是还没有初始化,可能没有这样的程序)的虚拟内存的大小是体现不出来的。