C程序的存储空间布局

            下午突然想到了C程序的存储空间布局,忘了,翻书温习,记录如下:

             一个C程序的组成:正文段初始化数据段(数据段)非初始化数据段(BSS);下面简单介绍下这些段:

            正文段:由CPU执行的机器指令部分。通常,正文段是可共享的,在存储器中只需要有一个副本即可,很多时候,正文段也是只读的,防止意外修改;

            初始化数据段,又称数据段,程序中需要明确赋值的变量,即C程序中的有具体赋值的全局变量;

           未初始化的数据段,又称bbs,即C程序中没有具体赋值的全局变量,系统默认赋值0或是NULL;

           ,自动变量以及每次函数调用时所需保存的信息都存放在此段中。每次调用函数时,其返回地址以及调用者的环境信息都存放在栈中。然后,最近被调用的函数在栈上为其自动和临时变量分配存储空间。通过以这种方式使用栈,可以递归调用C函数。递归函数每次调用自身时,就使用一个新的栈帧,因此一个函数调用实例中的变量集不会影响另一个函数调用实例中的变量。

          ,通常在堆中进行动态存储分配,即我们在C程序中进行的动态存储分配,malloc或者Calloc,不过记住,动态存储分配用完要进行释放,避免空间的泄漏。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值