计算机存储器
计算机中有两种存储器,RAM和ROM
RAM:随机存取存储器(random access memory),也叫主存(内存)。它可以随时读写,而且速度很快,掉电容易丢失
ROM:只读存储器(Read-Only Memory),掉电不丢失
cpu可以直接访问RAM中的内容,但不能直接访问ROM中的东西,如果需要,得通过文件系统,将其转移到RAM中再进行执行。
首先为什么32位电脑地址范围是0到4G?
计算机是里都是0101这样的二进制表示
2的32次方是4G
即从0x00000000到0xFFFFFFFF
2的10次方(bit) = 1024B=1KB
2的20次方(bit) =1024KB=1MB
2的30次方(bit)=1024MB=1G,
2的32次方(bit)=4GB
在这4G空间大小中,0~3G属于是用户空间,3G~4G属于是内核空间
RAM内存分布
ram内存分为5个区,也就是上面图中的0~3G
其中
栈区(stack)
存放 局部变量、函数的参数值、函数跳转地址
先进后出,一旦出了作用域就会被销毁
栈区地址从高到低分配
自动管理内存
堆区(heap)
使用的是alloc进行内存分配
堆区的地址是从低到高分配
需要程序员自己管理内存;
全局区/静态区(static)
存放全局变量和静态变量(未初始化过 、初始化过)
其中.bss是未初始化过的,.data是初始化过的
程序结束后由系统释放
常量区:
存放常量、字符串
程序结束后由系统释放
代码区:
存放程序代码
程序结束后由系统释放