
C语言中内存的管理与使用—堆与栈
内存管理是计算机学习编程的一个重要知识,也是令大多数程序员比较头疼的一个知识。由于在目前的嵌入式系统中资源仍然是有限的,所以对内存的管理就显得尤为重要。C语言程序的内存接口简单,内存管理灵活,所以是初学者容易出错的知识,下面就让我们分三篇文章进行讲解,这篇文章主要讲解的是内存管理中的堆与栈。
1、堆与栈的区别
栈:由系统自动分配的释放,用来存放函数的参数、局部变量的值。有先进先出的特点
堆:由程序员分配释放,若程序员未进行释放会由OS进行回收
2、什么是堆?
通过上面的两句话只是简单的概括了一下堆栈的特点,并不能解释什么是堆和栈,下面就让我们详细的看一下C语言中的堆是如何解释的。
一个为计算机程序可以分为两个部分:存放代码的代码段和存放变量的和数据的数据段数据段中又增加了全局初始化数据区和未初始化数据区。其中全局初始化数据区包含程序中明确被初始化的全局变量和静态变量以及常量。
其中堆是一个位于未初始化数据区(BSS)段和栈之间,用来动态分配内存。这段区域由程序员管理,程序员利用操作系统提供的分配和释放函数可以使用堆区的内存,每个程序员会进行扫描未用空间,当一个空间的大小符合申