C/C++可执行程序的内存管理
1-代码段(Text Segment):也称为代码区或只读代码区,存储着程序的机器指令(代码)。这些指令在程序运行时被执行。代码段通常是只读的,防止程序意外地修改自身的指令。
2-数据段(Data Segment):数据段通常分为两部分:
初始化的数据(Initialized Data):也称为数据区或数据段,存储初始化过的全局变量、静态变量和常量。这些数据在程序运行前就被初始化,存储在可执行文件中。在执行过程中,这些数据可以被读取和修改。
未初始化的数据(Uninitialized Data):也称为BSS(Block Started by Symbol)段,存储未初始化的全局变量和静态变量。这些变量在程序加载时会被初始化为零或默认值。
3-堆(Heap):堆是一个用于动态内存分配的区域。程序可以在运行时从堆上分配内存,然后在不再需要时释放。这是一种动态管理的内存区域,用于满足程序运行时的动态内存需求。
4-栈(Stack):栈是一个用于管理函数调用和局部变量的区域。它是一种后进先出(LIFO)的数据结构,用于维护函数的调用链以及函数中的局部变量。每次函数调用时,会在栈上创建一个新的栈帧,包含函数参数、局部变量和返回地址等信息。
5-常量区(Constant Segment):也称为只读数据区或符号区,存储常量值、字符串文字和其他不可修改的数据。这些数据在程序运行期间是只读的,不允许被修改