关于最大内存的问题
先说一下我的理解:内存编号为1字节1个编号
那么32位地址总线寻址就是2的32次方个编号
也就是能寻址最大编号是4G,因为每一个编号是8bit构成的
那么能用的内存大小应该是4G*8bit=4294967295bit*8bit=31G,可是都说是最大4G,实际计算机使用还达不到4G
这是咋回事?
#include <stdio.h> #include <windows.h> main() { MEMORYSTATUS ms; ms.dwLength = sizeof(MEMORYSTATUS); GlobalMemoryStatus(&ms); printf("内存的使用率:%d%%\n", ms.dwMemoryLoad); printf("物理内存总数:%f GB\n", (float)ms.dwTotalPhys/1024/1024/1024); printf("空闲物理内存:%f GB\n", (float)ms.dwAvailPhys/1024/1024/1024); printf("虚拟内存总数:%f GB\n", (float)ms.dwTotalPageFile/1024/1024/1024); printf("空闲虚拟内存:%f GB\n", (float)ms.dwAvailPageFile/1024/1024/1024); printf("--------------------------\n"); printf("用户地址空间总数:%f GB\n", (float)ms.dwTotalVirtual/1024/1024/1024); printf("用户可用地址空间:%f GB\n", (float)ms.dwAvailVirtual/1024/1024/1024); }