读书人

既然指针在32位里是4byte那。解决思

发布时间: 2012-04-16 16:20:04 作者: rapoo

既然指针在32位里是4byte,那。。。。。。
既然指针在32位里是4byte,即等于32位,范围是0-4294967295.意思就是说32位指针可以在4294967296个byte里分配地址。

假设极端情况:内存每一个byte都分配了一个指针,为了确保每个byte都有指针地址,那32位指针的支持内存的大小是:4294967296/(1024*1024*1024)=3GB
但是现在32位电脑都支持3.25——3.5g的内存,这是为何?
谢谢!

[解决办法]

探讨
既然指针在32位里是4byte,即等于32位,范围是0-4294967295.意思就是说32位指针可以在4294967296个byte里分配地址。

假设极端情况:内存每一个byte都分配了一个指针,为了确保每个byte都有指针地址,那32位指针的支持内存的大小是:4294967296/(1024*1024*1024)=3GB
但是现在32位电脑都支持3.25——3.5g的内存,这是为何?
……

[解决办法]
做为一个程序员,我不相信自己的算笔算。
所以:
#include<limits.h>
#include<stdio.h>
#include<stdlib.h>

#define unit_g (1024*1024*1024)
int main()
{
unsigned int n=UINT_MAX/uint_g;
printf("%u\n", (UINT_MAX-n*unit_g+1)/uint_g+n);
system("pause");
return 0;
}

读书人网 >C语言

热点推荐