关于最大内存的问题
先说一下我的理解:内存编号为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);
}