C语言内存管理思想

自闭症网瘾萝莉.ら 提交于 2020-02-08 19:23:35

内存的属性

1、大小
2、在哪里

int a;就告诉内存大小为4字节
全局变量与局部变量放置 的位置也不同
————————————0xffff ffff
内核空间 应用程序不许访问
————————————————
栈空间 (局部变量)
——————————————
运行时的堆空间 (malloc申请的空间)
————————————

代码段(一般比较低)===》只读数据段(text)
全局数据空间(初始化DATA,未初始化bss)
————————————
0x0

栈空间

运行时,函数内部使用的变量,函数一旦返回就释放,生存周期是函数内

只读空间

如果对空间进行写操作会出现段错误
只读数据段和代码段构成只读空间(TEXT)

数据段

加了static的局部变量会放到全局数据空间
未初始化的全局变量在bss 初始化的在DATA都属于全局数据空间
局部变量的都会存在栈空间

堆空间

由程序员决定或者某些特殊条件才释放的空间
运行时,可以自由、自我管理的分配和释放的空间,生存周期由程序员来决定
分配:malloc()一旦成功,返回分配好的地址给我们,对于新地址的读法,由程序员决定,可以4个4分读,可以先读100个再读100个。输入参数指定分配大小,单位是B
char *p;
p=malloc(100);
if(p==NULL) (用来检测是否申请成功)
{
error
}
释放:free(p);参数为申请的地址

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!