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;
}
相关推荐
you458042 分钟前
小程序学习笔记:使用 MobX 实现全局数据共享,实例创建、计算属性与 Actions 方法
笔记·学习·小程序
Brookty1 小时前
【MySQL】JDBC编程
java·数据库·后端·学习·mysql·jdbc
DKPT1 小时前
Java设计模式之结构型模式(外观模式)介绍与说明
java·开发语言·笔记·学习·设计模式
编程小白gogogo2 小时前
Spring学习笔记
笔记·学习·spring
qq_527887872 小时前
【学习笔记】Python中主函数调用的方式
笔记·学习
Chef_Chen2 小时前
从0开始学习R语言--Day37--CMH检验
学习
you45804 小时前
小程序学习笔记:API 的 Promise 化
笔记·学习·小程序
hjs_deeplearning4 小时前
认知篇#10:何为分布式与多智能体?二者联系?
人工智能·分布式·深度学习·学习·agent·智能体
静心问道11 小时前
XLSR-Wav2Vec2:用于语音识别的无监督跨语言表示学习
人工智能·学习·语音识别
懒惰的bit10 天前
STM32F103C8T6 学习笔记摘要(四)
笔记·stm32·学习