C语言内存管理思想

内存的属性

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);参数为申请的地址

你可能感兴趣的:(C语言内存管理思想)