历史沿袭至今,C语言程序典型的存储空间安排图
扫描二维码
随时随地手机看文章
一个C程序经过编译链接之后形成可执行文件,可执行文件即由一条条的汇编指令组成,其排布方式如图1所示。历史沿袭至今,C程序一直由以下几部分组成:
正文段:由CPU执行的机器指令组成。通常,正文段是可共享的,在存储器中也只有一个副本,另外,正文段通常是只读的,防止程序由于意外修改其指令。
初始化数据段:通常将此段称为数据段,它包含了程序中需要明确赋初值的变量。
未初始化数据段:在程序开始执行之前,内核将此段中的数据初始化为0或空指针。
栈:自动变量以及每次函数调用时所需保存的信息存放在此段中。每次函数调用时,其返回地址以及调用者的环境信息都存放在栈中。然后,最近被调用的函数在栈上为其自动和临时变量分配存储空间。
堆:通常在堆中进行动态存储分配。