1. 首页
  2. 操作系统
  3. Unix
  4. C程序的存储空间布局-鸿鹄论坛_华为认证h35-211-hcnp-access network题库

C程序的存储空间布局-鸿鹄论坛_华为认证h35-211-hcnp-access network题库

上传者: 2024-07-15 20:56:12上传 PDF文件 18.16MB 热度 8次

7.6 C程序的存储空间布局由于历史原因,C程序一直由下列几部分组成:

正文段。这是由CPU执行的机器指令部分。通常,正文段是可共享的,所以即使是经常访问的代码也不会被多个进程重复加载。这种共享方式不仅节省了内存,还提高了系统效率。相关资料可以参考unix环境高级编程c程序应用编程了解更多详细信息。

数据段。这个部分包括了程序运行时需要的全局变量和静态变量。数据段通常被分为已初始化数据和未初始化数据两个部分。已初始化数据段包含那些在程序启动时就已经有初值的变量,而未初始化数据段则包含那些没有显式初始化的变量。在现代的UNIX系统中,这两个部分的数据段也是可共享的。更多内容可以参考UNIX环境高级编程C的资料。

堆。堆是在程序运行时动态分配内存的区域。程序可以使用诸如malloccallocrealloc等函数来请求堆内存,并且在不再需要时使用free函数来释放内存。堆的大小是动态变化的,由操作系统负责管理。有关堆内存管理的技术细节可以参阅unix环境下oracle pro c程序的编译程序

栈。栈是另一个动态分配的内存区域,但它主要用于存储函数调用时的局部变量和函数返回地址。每当一个函数被调用时,相关信息就会被压入栈中,函数返回时,这些信息会被弹出。栈的大小通常是固定的,由操作系统在程序启动时分配。栈的管理方式可以参考UNIX环境高级编程UNIX环境高级编程

用户评论