总结查找资料 总结内存申请释放相关知识点如下。
参考: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
二、
三、