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;
}
相关推荐
●VON10 分钟前
重生之我在大学自学鸿蒙开发第七天-《AI语音朗读》
学习·华为·云原生·架构·harmonyos
陌路2019 分钟前
C语言基础入门阶段
c语言
胖咕噜的稞达鸭34 分钟前
二叉树搜索树插入,查找,删除,Key/Value二叉搜索树场景应用+源码实现
c语言·数据结构·c++·算法·gitee
清风wxy2 小时前
C语言基础数组作业(冒泡算法)
c语言·开发语言·数据结构·c++·windows·算法
仲星(._.)2 小时前
C语言:自定义类型
c语言·开发语言
程序员东岸2 小时前
避坑修链表:从顺序表到单链表的那点事儿(含可跑示例与小项目串联)
数据结构·笔记·学习·程序人生·链表
future14122 小时前
C++ 学习日记
开发语言·c++·学习
禁默2 小时前
机器学习基础入门(第五篇):半监督学习与强化学习
人工智能·学习·机器学习
懒羊羊不懒@2 小时前
算法入门数学基础
c语言·数据结构·学习·算法
zhonghaoxincekj3 小时前
晶体管的定义,晶体管测量参数和参数测量仪器
功能测试·单片机·学习·测试工具·单元测试·制造