1 / 6
文档名称:

动态内存分配ppt课件.ppt

格式:ppt   大小:468KB   页数:6页
下载后只包含 1 个 PPT 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

动态内存分配ppt课件.ppt

上传人:luyinyzha 2018/9/25 文件大小:468 KB

下载得到文件列表

动态内存分配ppt课件.ppt

文档介绍

文档介绍:语言程序设计
静态内存分配和动态内存分配
C
静态内存分配和动态内存分配
1、静态内存分配
当程序中定义变量或数组以后,系统就会给变量或数组按照其数据类型及大小来分配相应的内存单元,这种内存分配方式称为静态内存分配。
int k; //系统将给变量k分配2个字节(VC下分配4个字节)的内存单元
char ch[10]; //系统将给这个数组ch分配10个字节的内存块,首地址就是ch的值
静态内存分配一般是在已知道数据量大小的情况下使用
例如,要对10个学生的成绩按降序输出,则可定义一个数组:int score[10]; 用于存放10个学生的成绩,然后再进行排序。
如果事先并不知道学生的具体人数,编写程序时,人数由用户输入,然后再输入学生的成绩。那有如何如何处理呢?
int n;
int score[n];
scanf ("%d", &n);
如何解决?
动态内存分配
2、动态内存分配
所谓动态内存分配是指在程序运行过程中,根据程序的实际需要来分配一块大小合适的连续的内存单元。
程序可以动态分配一个数组,也可以动态分配其它类型的数据单元。动态分配的内存需要有一个指针变量记录内存的起始地址。
C语言中动态内存分配其实就是使用一个标准的库函数malloc,其函数的原型为:
void *malloc( unsigned int size );
说明:
size这个参数的含义是分配的内存的大小(以字节为单位)。
返回值:失败,则返回值是NULL(空指针)。
成功,则返回值是一个指向空类型(void)的指针
(即所分配内存块的首地址)。
语言程序设计
静态内存分配和动态内存分配
C
sizeof运算符
sizeof运算符
功能:获取变量和数据类型所占内存大小(字节数)
格式:
sizeof 表达式
sizeof(数据类型名或表达式)
例: sizeof (int) 其值为2()
其值为4()
sizeof (long) 其值是4
sizeof (10L ) 其值也是4
unsigned long a = 2;
sizeof (a) 其值也是4
语言程序设计
静态内存分配和动态内存分配
C
2、动态内存分配
int n, *pscore;
scanf ("%d", &n);
//分配n个连续的整型单元,首地址赋给pscore
pscore = (int *) malloc(n * sizeof(int));
//分配内存失败,则给出错误信息后退出
if (pscore == NULL)
{
printf ("Insufficient memory available! ");
exit (0);
}
……//可对pscore所指向的单元进行其它处理
例如:根据学生人数来建立数组的问题可以用动态内存分配来解决,其方法如下:
动态分配的内存块
0100
pscore 0100
共n*sizeo