a为局部变量时
a的地址是000000000061FE4C
main的地址是0000000000401550
a为全局变量时
内核空间 应用程序不能访问
------------------------ 3G
栈空间 局部变量 RW
------------------------
运行时的堆空间 malloc
------------------------
全局数据空间(初始化 、未初始化) static RW
只读数据段 R
代码段 R
------------------------
0x0
内存分布之数据段
内存分布之堆空间
运行时才有
只读空间
静态空间:整个程序结束时释放内存
栈空间
运行时,函数内部使用的变量,函数一旦返回,就释放,生存周期是函数内
堆空间
运行时,可以自由,自我管理的分配和释放的空间,生存周期是由程序员来决定
分配:
malloc函数,一旦分配好的地址给我们,只需要接收,对于这个新地址的读法,由程序员灵活把握,输入参数指定分配的大小,单位就是B。
char *p
p = (char *)malloc()
如果p等于 空,则返回失败
if(p == NULL)
{
ERROR;
}
没分配好就没用
int a[5];
malloc(5*sizeof(int))
返回一个地址
释放:free(p);