C程序设计C程序设计 (81).pdf
《C程序设计C程序设计 (81).pdf》由会员分享,可在线阅读,更多相关《C程序设计C程序设计 (81).pdf(21页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、C C程序设计程序设计Programming in CProgramming in C获取动态内存获取动态内存1、动态内存的概念2、分配动态内存3、释放动态内存C C程序设计程序设计程序设计程序设计3 37.6 7.6 动态内存动态内存有时,需要在程序运行中获得存储空间大小随时变化(而非固定大小)的内存块,这就需要用到动态内存。4 47.6.1 7.6.1 动态内存的概念动态内存的概念在使用数组的时候,总有一个问题困扰着我们:数组应该有多大?例如编写程序求N阶行列式的值,用数组表示行列式,需要如下定义:doubledouble A A N NN N;/NxN二维数组表示N阶行列式/NxN二维数
2、组表示N阶行列式5 57.6.1 7.6.1 动态内存的概念动态内存的概念前面讲过数组定义时,方括号内必须是常量,因此确切的定义应如下:而意图是错误的。#define N 10double#define N 10double A A N NN N;/NxN二维数组表示N阶行列式/NxN二维数组表示N阶行列式intint n n;scanfscanf(%d,&(%d,&n n););/输入n值/输入n值doubledouble A A n nn n;/意图由输入n值确定数组大小/意图由输入n值确定数组大小6 67.6.1 7.6.1 动态内存的概念动态内存的概念在很多情况下,并不知道实际运行时数
3、组到底有多大。那么就要把数组定义得足够大,并且运行时要对下标值做限制。否则,当定义的数组不够大时,可能引起数组越界,导致严重错误。如果因为某种特殊原因对数组的大小有增加或者减少,则必须重新去修改和编译程序。之所以出现这样的问题,是因为静态内存分配。7 77.6.1 7.6.1 动态内存的概念动态内存的概念C语言内存分配有两种方式:静态分配和动态分配。静态分配指在编译时为程序中的数据对象分配相应的存储空间,例如程序中所有全局变量和静态变量,函数中的非静态局部变量等,本课程前面所有例子中的变量、数组、指针定义等均是静态分配方式。由于是在编译时为数据对象分配存储空间,因此就要求在编译时空间大小必须是
4、明确的,所以数组的长度必须是常量。而一旦编译完成,运行期间这个数组的长度就是固定不变的。8 87.6.1 7.6.1 动态内存的概念动态内存的概念动态分配是程序运行期间根据实际需要动态地申请或释放内存的方式,它不象数组等静态内存分配方式那样需要预先分配存储空间,而是根据程序的需要适时分配,且分配的大小就是程序要求的大小。因此,动态分配方式有如下特点:不需要预先分配存储空间;分配的空间可以根据程序的需要扩大或缩小;9 97.6.1 7.6.1 动态内存的概念动态内存的概念静态分配的内存在程序内存布局的数据区和栈区中,动态分配的内存在程序内存布局的堆区中。堆区的存储空间上限是物理内存的上限,甚至有
5、的操作系统在物理内存不够时,用硬盘来虚拟内存,因此动态分配能得到比静态分配更大的内存。动态分配的缺点是运行效率不如静态分配,因为它的分配和释放会产生额外的调用开销。实际编程中,在运行时分配或内存大小需要随时调整等情况下才使用动态分配方式。10107.6.2 7.6.2 动态内存的分配和释放动态内存的分配和释放C语言动态内存管理是通过标准库函数来实现的,其头文件为stdlib.h。11117.6.2 7.6.2 动态内存的分配和释放动态内存的分配和释放1动态内存分配函数(1)malloc函数malloc用于分配一个指定大小的内存空间,函数原型为:若分配成功,函数返回一个指向该内存空间起始地址的v
6、oid类型指针;分配失败,函数返回0值指针NULL。参数size表示申请分配的字节数,类型size_t一般为unsigned int。voidvoid*mallocmalloc(size_tsize_t sizesize););12127.6.2 7.6.2 动态内存的分配和释放动态内存的分配和释放实际编程中,malloc函数返回的void类型指针可以显式转换为其他指针类型。调用函数时,一般使用sizeof来计算内存空间的大小,因为不同系统中数据类型的空间大小可能不一样。需要注意,分配得到的内存空间是未初始化的,即内存中的数据是不确定的。13137.6.2 7.6.2 动态内存的分配和释放动态
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- C程序设计C程序设计 81 程序设计 81
限制150内