目录
7.1 概述
数据的长度是预先定义好的,在整个程序中固定不变,容量不能改变。但实际编程时往往会发生所需的内存空间取决于实际输入的数据,无法预先确定。
C语言提供了一些内存管理函数,可以按需动态的分配内存空间,也可把不再使用的内存空间回收再次利用。
7.2 静态分配、动态分配
1、静态分配
在程序编译或运行过程中,按事先规定的大小分配内存空间的分配方式:int a[10],
(1)必须事先知道所需空间的大小
(2)分配在栈区或全局变量区,一般以数组的形式
(3)按计划分配
2、动态分配
在程序运行过程中,根据需要的大小自由分配所需的空间,分配在堆区,一般使用特定的函数进行分配
7.3 动态分配函数
7.3.1 malloc函数
include<stdlib.h>
void* malloc(unsigned int size);
参数是无符号整形,返回值是void指针。
在内存的动态存储区(堆区)分配一块长度为size字节的连续区域,用来存放类型说明符指定的类型,分配的内存空间内容不确定,一般使用memset初始化。
注意:
(1)函数原型返回void*指针,使用时必须做相应的强制类型转换
char* p;
p = (char*)malloc(20); //强制类型转换