----------------------------------------------------------- 4G(0xffff ffff)
内核空间 应用程序不许访问
------------------------------------------------------------ 3G
栈空间 RW 局部变量保存位置
-------------------------------------------------------------
运行时堆空间 malloc
--------------------------------------------------------------
全局的数据空间 RW (初始化的(data)、未初始化的(bss)) data bss
只读数据段 R “ Hello world ”, text
代码段(只读) R code text
---------------------------------------------------------------0x00
ubuntu@ubuntu-virtual-machine:~$ size struct
text data bss dec hex filename
1267 560 8 1835 72b struct
一个局部变量前进行static修饰时,作用范围没有变还是当前函数内部,但是函数返回时,并没有释放,这一变量将进入静态数据段中的全局数据空间。
栈地址:运行时,函数内部使用的变量,函数一旦返回,就释放,生存周期时函数内
堆空间:运行时,可以自由、自我管理的分配和释放空间,生存周期由程序员决定
分配:
malloc(),一旦成功,返回分配好的地址给我们,只需要接受,对于这个新地址的读法,由程序员灵活把握,输入参数决定分配的大小,单位是Byte。
char *p;
p = (char *)malloc(100);
if(p ==NULL){
error;
}
int a[5];
释放:
free(p);