***:stack栈
heap堆
1,全局变量,静态的局部变量:在程序运行前会初始化为0;
2,内存布局规律:内存地址由高到低:
局部变量
动态申请的内存空间
全局变量-未初始化
静态变量-未初始化
静态变量-初始化
全局变量-初始化
字符串常量
函数
栈:是函数执行的内存区域,和堆共享一片区域;存放:局部变量,函数的参数,函数的返回值;
堆:用于存放进程运行中被动态分配的内存段,大小不固定。当进程调用malloc等函数分配内存时,新分配的内存就被动态添加到堆上;当利用free等函数释放内存时,被释放的内存从堆中被剔除;
BSS:block started by symbol 存放程序中未初始化的全局变量及静态局部变量;这个区段中的数据在程序运行前会自动初始化为0;
数据段data:存放已经初始化的全局变量和局部静态变量;
代码段text:存放程序执行代码的一块内存区域;