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;
}
相关推荐
CC数分1 分钟前
零基础3个月上岸[特殊字符]自学数据分析路线
学习·数据挖掘·数据分析·大学生·考证
HAH-HAH3 分钟前
【蓝桥杯 2024 国 Java A】粉刷匠小蓝
c++·学习·数学·算法·职场和发展·蓝桥杯·组合数学
酷讯网络_24087016031 分钟前
多语言共享贩卖机投资理财共享售卖机投资理财系统
学习·开源
番薯大佬44 分钟前
Python学习-day8 元组tuple
java·python·学习
wanzhong23331 小时前
ArcGIS学习-17 实战-密度分析
学习·arcgis
知识分享小能手1 小时前
React学习教程,从入门到精通,React 组件生命周期详解(适用于 React 16.3+,推荐函数组件 + Hooks)(17)
前端·javascript·vue.js·学习·react.js·前端框架·vue3
Pretend° Ω2 小时前
LRU缓存详解:用C语言实现高效数据管理
运维·c语言·spring·缓存·lru·双向链表
我叫汪枫2 小时前
C语言深度入门系列:第十一篇 - 动态内存管理与数据结构:程序世界的高效算法大师
c语言·数据结构·算法
yuxb733 小时前
Docker 学习笔记(七):Docker Swarm 服务管理与 Containerd 实践
笔记·学习·docker
Dersun4 小时前
python学习进阶之异常和文件操作(三)
开发语言·python·学习·json