当前位置: 首页 > news >正文

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;
}

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • OSI七层网络模型 /TCP/IP五层模型以及封装分用的详细讲解
  • 最近网友问晚上失眠的问题
  • 【vue3|第22期】Vite + Vue3:vite配置文件
  • 重磅!2023中国高校计算机大赛-人工智能创意赛结果出炉
  • 声明式事务及编程式事务
  • 数据在内存中的存储(了解大小端字节序浮点数在内存中存储)详细~
  • zabbix实战-磁盘空间告警
  • 华为鸿蒙Core Vision Kit 骨骼检测技术
  • 构建第一个Spring项目
  • 黑神话悟空什么配置可以玩?什么样的游戏本配置可以畅玩《黑神话:悟空》?黑神话悟空电脑配置推荐
  • WEB之文件上传
  • 华为M60首次降价,消费回暖能延续?
  • 【FreeRTOS】队列实验-多设备玩游戏(旋转编码器)
  • SQL 时间盲注 (injection 第十五关)
  • java.sql.SQLException: txn too large, size: 104857606.
  • 实现windows 窗体的自己画,网上摘抄的,学习了
  • [LeetCode] Wiggle Sort
  • 【个人向】《HTTP图解》阅后小结
  • 【每日笔记】【Go学习笔记】2019-01-10 codis proxy处理流程
  • HTML-表单
  • Java 内存分配及垃圾回收机制初探
  • js面向对象
  • js写一个简单的选项卡
  • node 版本过低
  • Redis字符串类型内部编码剖析
  • Swoft 源码剖析 - 代码自动更新机制
  • webpack4 一点通
  • windows下mongoDB的环境配置
  • 面试遇到的一些题
  • 目录与文件属性:编写ls
  • 前端之React实战:创建跨平台的项目架构
  • 日剧·日综资源集合(建议收藏)
  • 通信类
  • Unity3D - 异步加载游戏场景与异步加载游戏资源进度条 ...
  • ​​​​​​​​​​​​​​汽车网络信息安全分析方法论
  • # Redis 入门到精通(八)-- 服务器配置-redis.conf配置与高级数据类型
  • # 深度解析 Socket 与 WebSocket:原理、区别与应用
  • $$$$GB2312-80区位编码表$$$$
  • (PHP)设置修改 Apache 文件根目录 (Document Root)(转帖)
  • (二十三)Flask之高频面试点
  • (附源码)ssm考试题库管理系统 毕业设计 069043
  • (三分钟了解debug)SLAM研究方向-Debug总结
  • (一)Mocha源码阅读: 项目结构及命令行启动
  • (原创)Stanford Machine Learning (by Andrew NG) --- (week 9) Anomaly DetectionRecommender Systems...
  • (转)IOS中获取各种文件的目录路径的方法
  • .mysql secret在哪_MYSQL基本操作(上)
  • .Net Core中的内存缓存实现——Redis及MemoryCache(2个可选)方案的实现
  • .NET 中 GetHashCode 的哈希值有多大概率会相同(哈希碰撞)
  • .net解析传过来的xml_DOM4J解析XML文件
  • .NET开发人员必知的八个网站
  • .NET委托:一个关于C#的睡前故事
  • /var/lib/dpkg/lock 锁定问题
  • ??javascript里的变量问题
  • [ 手记 ] 关于tomcat开机启动设置问题
  • [BJDCTF2020]Easy MD51