一、
当程序变成进程时,系统会给进程分配一个虚拟地址空间,大小为4G,最终映射到物理内存中,内核占1G;剩余3G分为四个部分:栈空间、堆空间、全局数据区、代码段。
栈空间:先进后出,由系统管理,里面存储局部变量,函数形参,自动变量。
堆空间:先进先出,由用户管理,存储malloc,calloc,ralloc。
全局数据区:1. bss:未初始化的全局变量
2. ordata:常量(只读)
3.静态数据区:初始化的全局变量,static修饰的变量。
二、
变量三特点:数据类型、存储方式、作用域。
局部变量与全局变量的区别:1.作用域,全局变量在程序结束后释放,局部变量在函数调用结束后释放。2.存储区,全局变量存储在全局数据区,局部变量存储在栈空间,3.全局变量未初始化系统会自动赋值为0,局部变量的话,系统会随机一个垃圾值。
三、
声明与定义的区别
声明可声明多次,定义只可定义一次;
声明不分配内存空间,定义分配内存空间。