0%

Computer_composition_principles02

程序内存的布局

一个程序的内存空间大致可以分为以下几个区域:

  1. 代码段(Text Segment)
    • 存放程序的可执行代码,即机器码。
    • 这部分内存是只读的,避免程序在运行过程中修改自己的代码。
  2. 数据段(Data Segment)
    • 存储全局变量、静态变量、常量等已初始化的数据。
    • 数据段可以进一步分为 已初始化数据段未初始化数据段(又称 BSS 段)。
  3. BSS 段(Block Started by Symbol)
    • 用于存储程序中的 未初始化的全局变量和静态变量
    • 在程序加载时,BSS 段的所有数据会被初始化为零。
  4. 堆(Heap)
    • 用于动态分配内存(如 newmalloc 等),它是程序运行时申请内存的区域。
    • 堆的内存由程序员手动管理,使用完后需要显式释放(如通过 deletefree)。
  5. 栈(Stack)
    • 存储局部变量、函数调用信息、返回地址等。
    • 栈的内存是自动管理的,当函数调用时会分配栈空间,函数返回时会自动释放。
  6. 堆栈区(Stack and Heap)
    • 栈和堆是用于存储临时数据的区域,栈由操作系统自动管理,而堆则由程序员通过动态内存分配来管理。