C语言教学内存综述

时间:2022-04-15 08:56:00

C语言教学内存综述

1.C语言教学中内存分析的必要性在C语言程序设计教学中,不管是变量或不同类型的表达式,都会和内存发生关系,那么内存单元中数据的值和类型就要和变量、表达式一一对应起来,其中确定变量、表达式的值就一定要和内存联系起来,这样在程序分析过程中内存的分析就变得尤为重要,它始终贯穿整个C语言程序设计教学的始终,并且要给学生贯穿这种思想,让学生在分析程序时会进行内存分析,进而确定程序的运行结果.

2.明确变量和内存的关系在C语言中,变量和内存的关系是让部分老师和学生迷惑,其中主要涉及变量什么时候占用内存、什么时候释放内存和释放以后内存中的数据是什么.这就要搞清楚变量的定义、内存单元的地址、内存分配和内存释放的概念.变量用来标识(identify)一块内存区域,这块区域的值一般是可以更改的,这就是它“变”的由来,但是可以通过使用如const等一些修饰符号来限定这一内存区域的操作特性(characteristic),即变量的操作特性.用const修饰的使变量不能更改的和常量一样的变量叫做常变量.所谓变量名就是一个标识符(identifier),用来指代一块内存区域,即变量,使用变量使我们操作内存以区域(area)、块(block)为单位,提高了方便性.在机器代码中,是不会出现变量名的;

变量名是给程序员操作内存来使用的.内存分配就是在程序编译或运行时期用一个变量来标识一个存储单元,而且存储单元的长度和变量的类型要统一,这就意味着此时这块内存由这个变量独占,不允许其他的变量使用,随着变量值的变化,相应内存中的值也变化.内存释放是程序运行结束后变量消亡,内存的使用权释放,以供下一次的程序使用,在下一次的程序使用之前内存中的内容保持最近一次变量的值.

内存地址是在内存中用来表示每一块存储单元的表示,由操作系统来对内存统一编址,对程序员是透明的.由此可知,一个变量对应一块内存区域,但内存中的每一块存储单元都有唯一的地址来标识,变量根据程序的需要可以定义,但内存地址是必须存在的.变量和地址是内存的两种表示手段,只是变量在生存期和地址表示同一存储单元,当变量释放以后,只有地址来表示存储单元.

3.内存的分区和以及各分区的分配C语言中根据数据在内存中存在时间(即生存期)的不同,将供用户使用的内存空间分为程序区、静态存储区和动态存储区三个区域,其中动态存储区又分为堆区和栈区,其结构如下图表示:栈区的分配:在函数执行时,函数内部的局部变量和参数的存储单元在程序运行时在栈上创建,函数运行结束时这些存储单元被自动释放.局部变量、函数参数的内存为栈分配方式.