C语言基础——动态内存分配

十一、动态内存分配

11.1 概述

C语言中,数组的长度是预先定义好的,在整个程序中固定不变,即不允许动态数组类型。但是在实际的编程中,所需的内存空间取决于实际输入的数据,而无法预先确定。因此,以内内存管理函数,常用的有:

11.2 内存空间分配函数 malloc

调用形式:(类型说明符*)malloc(size)
其功能是在内存的动态存储区中分配一块长度为"size"字节的连续区域。函数的返回值为该区域的首地址。
其中,“类型说明符”表示把该区域用于何种数据类型; ( 类 型 说 明 符 ∗ ) (类型说明符*) () 表示把返回值强制转换为该类型指针;“size"是一个无符号数。

pc = (char *)malloc(100);
//表示分配100个字节的内存空间,并强制转换为字符数组类型,
//函数的返回值为指向该字符数组的指针,把该指针赋予指针变量pc.

11.3 内存空间分配函数 calloc

调用形式:(类型说明符*)calloc(n, size)
其功能为在内存动态存储区中分配 n 块长度为"size"字节的连续区域。函数的返回值为该区域的首地址;calloc函数与malloc函数的区别仅在于一次可以分配n块区域。

ps = (struct date *)calloc(2, sizeof(struct date));
//其中的sizeof(struct date)是求date的结构长度。
//该语句的意思是:按stu的长度分配2块连续区域,强制转换为stu类型,并把其首地址赋予指针变量ps.

11.4 内存空间释放函数 free

调用形式 free(指针名);
其功能为释放指针所指向的一块内存空间,该指针指向被释放区域的首地址。被释放区应是由malloc或calloc函数所分配的区域

你可能感兴趣的:(C语言,c语言)