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;
}
相关推荐
RuoZoe1 天前
重塑WPF辉煌?基于DirectX 12的现代.NET UI框架Jalium
c语言
祈安_4 天前
C语言内存函数
c语言·后端
西岸行者6 天前
学习笔记:SKILLS 能帮助更好的vibe coding
笔记·学习
norlan_jame6 天前
C-PHY与D-PHY差异
c语言·开发语言
czy87874756 天前
除了结构体之外,C语言中还有哪些其他方式可以模拟C++的面向对象编程特性
c语言
悠哉悠哉愿意6 天前
【单片机学习笔记】串口、超声波、NE555的同时使用
笔记·单片机·学习
m0_531237176 天前
C语言-数组练习进阶
c语言·开发语言·算法
别催小唐敲代码6 天前
嵌入式学习路线
学习
毛小茛6 天前
计算机系统概论——校验码
学习
babe小鑫6 天前
大专经济信息管理专业学习数据分析的必要性
学习·数据挖掘·数据分析