程序员的自我修养
一、. 代码编写的分区
代码段 | 可执行代码、字符串常量 |
---|---|
数据段 | 已初始化全局变量、静态变量、常量数据 |
BSS段 | 未初始化全局变量、静态变量 |
栈 | 局部变量、函数参数 |
堆 | 动态分配内存 |
五个数据段
进程(执行的程序)会占用一定数量的内存,它或是用来存放磁盘载入的程序代码,或是存放取自用户输入的数据等等。不过,进程对这些内存的管理方式因内存的用途不一而不尽相同:有些内存是事先静态分配和统一回收的;有些却是按照需要动态分配和回收的。
对于任何一个普通的进程来说,他们都会涉及到5种不同的数据段。
(1)代码段 --text(code segment/text segment)
代码段(text)段是程序代码段,通常存放程序执行代码的一块内存区域。这部分区域的大小在程序运行前便已经确认,并且内存区域属于只读区域。在代码段中,存放着一些只读的常数变量,例如字符串常量。
程序源代码编译后的机器指令经常被放在代码段里,代码段创建的名字有“.code”和“.text”.
(2)数据段 --data
数据段属于静态内存分配,所有有初值的全局变量和用static修饰的静态变量,常量数据都在数据段中。