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

来源:互联网 发布:chrome mac版 编辑:程序博客网 时间:2024/06/05 18:18

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

参考:http://blog.csdn.net/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





二、


三、