主要存放代码。
只读并且共享,这段内存在程序运行期间(进程活动期间),不会释放的。
"代码段" 随程序持续性(随进程持续性)
.data
数据段
主要存放程序中已经初始化的全局变量和已经初始化的static变量。
可读可写,这段内存在进程运行期间,一直存在。随进程持续性。
.bss
数据段
主要存放程序中没有初始化的全局变量和没有初始化的static变量。
可读可写,这段内存在进程运行期间,一直存在。随进程持续性。
.bss段,在进程初始化时,(可能)全部会将其保存的对象初始化为0
.rodata
只读数据段
主要存放程序中的只读数据(如: 常量、字符串 ==)
只读。这段内存在程序运行期间,一直存在。随进程持续性。
栈空间(stack):
主要存放局部变量(非static的局部变量)
可读可写。这段内存,会自动释放(代码块执行完了,
代码块中的局部变量的空间会自动释放)。随代码块持续性。
**** 返回一个局部变量的地址,是有问题。
堆空间(heap): "动态内存空间"
主要malloc/realloc/calloc动态分配的空间.
可读可写的,这段内存在进程运行期间,一旦被分配,
就会一直存在,直到用户手动free或进程消亡。
防止"内存泄漏" 、"垃圾内存"