C程序的存储空间布局-鸿鹄论坛_华为认证h35-211-hcnp-access network题库
7.6 C程序的存储空间布局由于历史原因,C程序一直由下列几部分组成:
正文段。这是由CPU执行的机器指令部分。通常,正文段是可共享的,所以即使是经常访问的代码也不会被多个进程重复加载。这种共享方式不仅节省了内存,还提高了系统效率。相关资料可以参考unix环境高级编程c程序应用编程了解更多详细信息。
数据段。这个部分包括了程序运行时需要的全局变量和静态变量。数据段通常被分为已初始化数据和未初始化数据两个部分。已初始化数据段包含那些在程序启动时就已经有初值的变量,而未初始化数据段则包含那些没有显式初始化的变量。在现代的UNIX系统中,这两个部分的数据段也是可共享的。更多内容可以参考UNIX环境高级编程C的资料。
堆。堆是在程序运行时动态分配内存的区域。程序可以使用诸如malloc
、calloc
和realloc
等函数来请求堆内存,并且在不再需要时使用free
函数来释放内存。堆的大小是动态变化的,由操作系统负责管理。有关堆内存管理的技术细节可以参阅unix环境下oracle pro c程序的编译程序。
栈。栈是另一个动态分配的内存区域,但它主要用于存储函数调用时的局部变量和函数返回地址。每当一个函数被调用时,相关信息就会被压入栈中,函数返回时,这些信息会被弹出。栈的大小通常是固定的,由操作系统在程序启动时分配。栈的管理方式可以参考UNIX环境高级编程UNIX环境高级编程。
用户评论