空间申请(malloc)与释放(free)——C语言
空间申请(malloc)与释放(free)——C语言
1. malloc与free函数
参考链接:
(1)头文件:
#include <malloc.h>
(2)malloc函数原型
返回的是一个void 类型的指针。
extern void *malloc(unsigned int num_bytes);
(3)free函数
①作用:释放malloc与calloc申请的空间
②形式:free(malloc与calloc申请的空间返回的指针)
例子:
//test malloc and free
void test03() {
char *str = NULL;
int i = 0;
str = (char *)malloc(sizeof(char) * 3);
str[0] = 'w';
str[1] = 'e';
str[2] = 'g';
for (i = 0; i < 3; ++i) {
printf("str[%d] = %c\n", i, str[i]);
}
free(str);
str = NULL;
}
结果:
str[0] = w
str[1] = e
str[2] = g
(4)注意事项
①使用了malloc函数申请了空间,为了避免内存泄漏,就要使用free函数释放空间,释放后并把指针置NULL。
②申请空间后的指针不能移动,不然释放失败。
③申请多少空间就使用多少空间,不能越界访问空间,不然会释放失败。
例子:
申请了两个字节的空间,却访问了第三个字节的空间,free释放str的时候没有办法去释放没有申请的空间,导致程序出错。
void test03() {
char *str = NULL;
int i = 0;
str = (char *)malloc(sizeof(char) * 2);//只申请了两个字节的空间
str[0] = 'w';
str[1] = 'e';
str[2] = 'g';//越界访问第三个字节
for (i = 0; i < 3; ++i) {
printf("str[%d] = %c\n", i, str[i]);
}
free(str);
str = NULL;
}
结果:
程序报错
分类:
C语言
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· winform 绘制太阳,地球,月球 运作规律
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 上周热点回顾(3.3-3.9)
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· AI 智能体引爆开源社区「GitHub 热点速览」