C语言 ——— 学习并使用malloc和free函数

目录

malloc函数的功能

学习malloc函数​编辑

使用malloc函数

free函数的功能

学习并使用free函数​编辑

malloc动态开辟10个整型空间后赋值为0-9,再打印,打印后free


malloc函数的功能

malloc函数能向内存申请一块连续可用的空间,并返回指向这块空间的指针

  • 开辟成功时:返回一个指向这块空间的指针
  • 开辟失败时:返回NULL,所以malloc的返回值一定要做检查,不用空时再使用

学习malloc函数

函数的参数:

**size_t size:**需要开辟空间的大小,单位是字节

函数的返回值:

void*: 返回值的类型是void* ,所以malloc函数并不知道开辟空间的类型,具体再使用的时候是使用者自己强制类型转换


使用malloc函数

代码演示:

复制代码
// 以数组的形式创建10个整型变量
int arr[10];

// 动态开辟10个整型变量
int* parr = (int*)malloc(sizeof(int) * 10);

free函数的功能

当程序退出时,动态开辟的空间就会销毁(还给操作系统)

当程序不退出时,动态申请的内存,不会主动释放的,需要用free函数来释放


学习并使用free函数

函数的参数:

**void* ptr:**需要传递动态开辟空间的起始位置的指针

注意:

free函数并不会主动将指针置空,需要交给free函数释放后,使用者自己置空

代码演示:

复制代码
// 动态开辟10个整型变量
int* parr = (int*)malloc(sizeof(int) * 10);

// 释放
free(parr);
// 置空
parr = NULL;

malloc动态开辟10个整型空间后赋值为0-9,再打印,打印后free

代码演示:

复制代码
#include<stdio.h>
#include<stdlib.h>
int main()
{
	// 动态开辟10个整型变量
	int* parr = (int*)malloc(sizeof(int) * 10);

	// 判断释放开辟成功
	if (parr == NULL)
	{
		perror("malloc");
		return -1;
	}

	// 赋值
	for (int i = 0; i < 10; i++)
	{
		*(parr + i) = i;
	}

	// 打印
	for (int i = 0; i < 10; i++)
	{
		printf("%d ", *(parr + i));
	}

	// 释放
	free(parr);
	// 置空
	parr = NULL;

	return 0;
}
相关推荐
m4Rk_1 小时前
【论文阅读】Agent 记忆机制(47):Nemori——用“预测误差”判断什么经验值得被记住
论文阅读·人工智能·学习·开源·github
约克31 小时前
2024年空调除甲醛技术参数与性能评测解析
学习
kkkkkkkkkk_Z1 小时前
学嵌入式和C语言编程数据结构|学习日记Day21:内核链表与队列学习
c语言·数据结构·学习
不正经学生1 小时前
C语言结构体:自定义数据类型,让变量打包出行
java·c语言·开发语言·数据结构·算法
老一岁2 小时前
c问题总结(1)
c语言·开发语言
一木 之林2 小时前
三、内存管理、指针与堆栈
c语言·jvm·c++
笨笨饿2 小时前
#110_SCH3000 平台图传系统配置指南:从 DVP 摄像头到 UVC/WiFi 双通道传输
c语言·stm32·单片机·嵌入式硬件·物联网·vim
caimouse3 小时前
ReactOS 窗口系统分析(20):光标与图标 — cursoricon.c
c语言·开发语言
H_oRIZoN_3 小时前
Linux入门DAY23(C语言树形结构)
linux·c语言·数据结构
kdxiaojie3 小时前
Linux USB驱动阅读笔记(1)
linux·笔记·学习·usb