【C语言】代码规范 内存管理

本文总结了C语言中程序内存的组成,包括BSS段、data段(堆、栈和静态数据区)以及text段。BSS段存放未初始化的全局和static变量,data段涉及堆、栈和静态数据,堆用于动态分配,栈处理函数调用时的临时数据,静态数据区存储已初始化的全局变量。此外,还提到了malloc和free等函数在内存管理中的作用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

总结查找资料 总结内存申请释放相关知识点如下。

参考:http://blog.youkuaiyun.com/chenyiming_1990/article/details/9476181


一、程序内存的组成:

1. 一共由3个部分组成:

BSS段 : 不在可执行文件中,由系统初始化

包含程序中未初始化的全局变量未初始化的static变量。   属于静态内存分配。即程序一开始就将其清零了。


BSS段只保存没有值的变量,所以事实上它并不需要保存这些变量的映像。运行时所需要的BSS段大小记录在目标文件中,

但BSS段并不占据目标文件的任何空间。 


data段: 在可执行文件中,由系统从可执行文件中加载

data段包含三个部分:heap(堆)、stack(栈)静态数据区

1)堆(heap)

        堆是用于存放进程运行中被动态分配的内存段,它的大小并不固定,可动态扩张或缩减。

      malloc等函数-----堆被扩张

                      free等函数-----堆被缩减


    2)栈(stack)

      一个寄存、交换临时数据的内存区。

     stack段存放函数内部变量、参数和返回地址

     其在函数被调用时自动分配,访问方式就是标准栈中的LIFO方式。


                3)静态数据区 在可执行文件中由系统从可执行文件中加载

       已初始化的全局变量、静态变量和常量




text  段:

指用来存放程序执行代码的一块内存区域。这部分区域的大小在程序运行前就已经确定,并且内存区域属于只读



可参考示例 

http://www.cnblogs.com/coder2012/p/3150757.html





二、


三、

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值