动态内存管理申请调整和释放

动态内存管理存放在内存中的堆区中
动态内存分配的函数:malloc、calloc、realloc、free

动态内存分配

  • malloc函数(内存申请空间)无初始化
  • free函数(动态内存释放)
  • calloc函数(内存空间申请)初始化
  • realloc函数(调整空间)

malloc函数(内存申请空间)无初始化

在这里插入图片描述
分配一个大小字节的内存块,返回一个指向该块开头的指针。
新分配的内存块的内容没有初始化,保留不确定的值。
如果size为0,则返回值取决于特定的库实现(它可能是也可能不是空指针),但是返回的指针不能被解引用。
malloc:是用来申请内存空间的

free函数(动态内存释放)

在这里插入图片描述
free:可以释放申请的内存
主动释放动态开辟的内存空间
注意free不能将接收的指针赋值为NULL,需要主动赋值为NULL

代码:

#include<stdio.h>
#include<errno.h>
#include<string.h>
#include<stdlib.h>//malloc头文件
int main()
{int* p =(int*)malloc(40);//申请40个字节来存放10个整形//因为malloc返回为void*,需要强制类型转换为int*if(p==NULL){printf("%s", strerror(errno));return 1;}//40个字节存放1-10for (int i = 0; i < 10;i++){*(p + i) = i + 1;//p是起始位置地址,为整形,访问数组下标为i的元素,跳过int类型i的字节个数//i+1赋值}//打印for (int i = 0; i < 10;i++){printf("%d ", *(p + i));}free(p);p = NULL;
}

开辟空间失败

 int* p =(int*)malloc(INT_FAST64_MAX);if(p==NULL){printf("%s", strerror(errno));return 1;}

calloc函数(内存空间申请)初始化

在这里插入图片描述
malloc不存放元素打印出随机值,malloc申请到的空间没有初始化,直接返回的起始地址,效率高
而calloc申请好空间后,会把空间初始化为0,返回起始地址

#include<stdio.h>
#include<string.h>
#include<stdlib.h>
int main()
{#include<stdio.h>
#include<string.h>
#include<stdlib.h>
int main()
{int* p=(int*)calloc(10,sizeof(int));//参数为元素个数和类型占用几个字节if(p==NULL){perror("calloc");return 1;}//使用for (int i = 0; i < 10;i++){printf("%d ", *(p + i));}free(p);p = NULL;return 0;

realloc函数(调整空间)

在这里插入图片描述
如果第一个参数传入的一个NULL指针的话,功能相当于malloc功能

#include<stdio.h>
#include<string.h>
#include<stdlib.h>
int main()
{//内存空间开辟int* p = (int*)malloc(5 * sizeof(int));if(p==NULL){perror("malloc");return 1;}//使用for (int i = 0; i < 5;i++){*(p + i) = 1;}//调整int* ptr = (int*)realloc(p, 10 * sizeof(int));//可以调整原申请空间的大小//使用一个临时的指针来接收,保证p指针数据不丢失if(ptr!=NULL)//判断临时开辟的空间是否失败{p = ptr;ptr=NULL;}for (int i = 0; i < 10;i++){printf("%d ", *(p + i));}free(p);p = NULL;return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/405425.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

页面设计任务 个人简介页面

目录 任务要求 任务讲解 源码: 详细讲解 html部分 CSS部分 任务要求 页面结构: 创建一个基本的 HTML 页面&#xff0c;页面标题为“我的个人简介”。页面内容分为以下四个部分&#xff1a; 顶部导航栏: 包含至少三个导航链接&#xff0c;例如&#xff1a;“主页”、“关于…

OpenCV几何图像变换(2)计算仿射变换矩阵的函数getAffineTransform()的使用

操作系统&#xff1a;ubuntu22.04 OpenCV版本&#xff1a;OpenCV4.9 IDE:Visual Studio Code 编程语言&#xff1a;C11 算法描述 计算三对对应点之间的仿射变换。 该函数计算 23 的仿射变换矩阵&#xff0c;使得&#xff1a; [ x i ′ y i ′ ] map_matrix ⋅ [ x i y i 1 …

Docker的安装与镜像配置

小编目前大一&#xff0c;刚开始着手学习SSM&#xff0c;小编会把每个框架都整理成知识点发布出来。如果你也同时在学习SSM的话&#xff0c;不妨看看我做的这个笔记。我认为同为初学者&#xff0c;我把我对知识点的理解以这种代码加观点的方式分享出来不仅加深了我的理解&#…

LORA通信详解

LORA&#xff08;Long Range Radio&#xff09;是一种低功耗广域网&#xff08;LPWAN&#xff09;技术&#xff0c;专门设计用于物联网&#xff08;IoT&#xff09;设备的远距离通信。其长距离传输和低功耗特性使其在智能城市、环境监测、农业等领域中得到了广泛应用。 一、LOR…

自抗扰控制ADRC原理解析及案例应用

1. ADRC基本原理 1.1 ADRC的基本概念 自抗扰控制&#xff08;Active Disturbance Rejection Control&#xff0c;ADRC&#xff09;是一种先进的控制策略&#xff0c;由韩京清研究员于1998年提出。ADRC的核心思想是将系统内部和外部的不确定性因素视为总扰动&#xff0c;并通过…

华硕飞行堡垒键盘全部失灵【除电源键】

华硕飞行堡垒FX53VD键盘全部失灵【除电源键】 前言一、故障排查二、发现问题三、使用方法总结 前言 版本型号&#xff1a; 型号 ASUS FX53VD&#xff08;华硕-飞行堡垒&#xff09; 板号&#xff1a;GL553VD 故障情况描述&#xff1a; 键盘无法使用&#xff0c;键盘除开机键外…

heic格式怎么转成jpg?3种格式转换方法分享

heic格式怎么转成jpg&#xff1f;将HEIC格式的图片转换为JPG格式&#xff0c;是图像处理中的常见需求&#xff0c;它极大地方便了跨平台分享与浏览。通过专业的转换软件&#xff0c;我们可以轻松实现这一转换过程&#xff0c;确保图像内容在更多设备和环境中得到兼容和展示。这…

vue 接口 传参token对 返回数据不对原因

接口不携带参数 接口token 正确 但是返回数据 返回的上一次登录的数据 处理 携带个时间戳

Python基础知识学习总结(五)

一. 字典 字典是另一种可变容器模型&#xff0c;且可存储任意类型对象。 字典的每个键值 key>value 对用冒号 : 分割&#xff0c;每个对之间用逗号( , )分割&#xff0c;整个字典包括在花括号 {} 中 。 dict 作为 Python 的关键字和内置函数&#xff0c;变量名不建议命名…

多商户入驻商城系统源码+收银系统源码

随着移动互联网的不断发展&#xff0c;私域小程序对于零售门店来说早已不再陌生。很多门店也都搭建了自己专属的私域商城&#xff0c;但是私域商城一直是不温不火的状态&#xff0c;尤其针对一些腰尾部商户来说&#xff0c;无小程序运营能力&#xff0c;小程序流量匮乏&#xf…

Unity 波函数坍缩算法随机地图生成

Unity 波函数坍缩算法随机地图生成 波函数波函数基本概念位置空间波函数动量空间波函数两种波函数之间的关系波函数的本征值和本征态波函数坍缩 熵是什么熵作为状态函数时间之箭 实现原理举个例子&#xff1a;2D迷宫地图生成 Unity 如何实现前期准备单元格代码瓦片地图代码波函…

jpg怎么转换成pdf?6个简单方法,实现jpg转换成pdf

你是否也曾想将jpg图片转换为pdf格式文档呢&#xff1f;亦或者在处理文档或制作报告时&#xff0c;不知道怎么才能更快地将多张图片整合成一个pdf文件呢&#xff1f;如果你正在寻找简单快速的方法&#xff0c;又有哪些工具可以帮助您完成图片转pdf呢&#xff1f;别着急&#xf…

“LOCAL_LISTENER”参数导致业务无法连接数据库,文末附Oracle连接故障检查监听的排查流程

1. 背景及问题 今天在Oracle BCV技术[1]做数据同步&#xff0c;建立生产库的测试库&#xff0c;需要DBA配合同步前后的停库和起库。在同步完起库后&#xff0c;有部门反应同步好的测试库连接不上去。 2. 问题排查 以我当前的知识储备&#xff0c;能想到的可能就是以下几点进…

深入浅出:你需要了解的用户数据报协议(UDP)

文章目录 **UDP概述****1. 无连接性****2. 尽最大努力交付****3. 面向报文****4. 多种交互通信支持****5. 较少的首部开销** **UDP报文的首部格式****详细解释每个字段** **UDP的多路分用模型****多路分用的实际应用** **检验和的计算方法****伪首部的详细内容****检验和计算步…

国内智能车零部件头号玩家引望:年出货300万套,估值1150亿

作者 |德新 编辑 |王博 8月19日&#xff0c;长安汽车发布公告&#xff0c;其联营企业阿维塔科技在当日的董事会上&#xff0c;通过了对引望公司的投资方案议案。 阿维塔将在8月20日与华为签约&#xff0c;阿维塔将出资115亿元&#xff0c;对引望公司持股10%&#xff0c;华为持…

用Maven开发Spring Boot 项目

一、初识 Spring Boot Spring Boot框架是一 套开源的后台开发框架&#xff0c; 继承了Spring MVC框架的前辈SSM框架的优秀特性&#xff0c;通过注解大幅减少程序员写配置的工作量。从企业开发角度来看&#xff0c;它提供了自动化配置&#xff0c;内嵌容器和兼容Maven等核心功…

设计模式六大原则(一)–单一职责原则(C#)

文章目录 1. 什么是单一职责原则&#xff1f;2. 单一职责原则的定义3. 单一职责原则的重要性4. 单一职责原则的示例&#xff08;C#&#xff09;5.如何判断是否违反单一职责原则6. 单一职责原则的应用场景7. 总结 在软件开发领域&#xff0c;设计模式是解决常见问题的经典解决方…

RK3588J正式发布Ubuntu桌面系统,丝滑又便捷!

本文主要介绍瑞芯微RK3588J的Ubuntu系统桌面演示&#xff0c;开发环境如下&#xff1a; U-Boot&#xff1a;U-Boot-2017.09 Kernel&#xff1a;Linux-5.10.160 Ubuntu&#xff1a;Ubuntu20.04.6 LinuxSDK&#xff1a; rk3588-linux5.10-sdk-[版本号] &#xff08;基于rk3…

如何使用mmdetection训练实例分割模型?

安装 anoconda 从官方网站下载并安装。 配置环境 conda create --name openmmlab python3.8 -y conda activate mmdet 安装 PyTorch 注意&#xff1a;这个步骤很关键&#xff0c;否则后面会出问题。一定要确保自己电脑当前安装和配置的cuda版本。 使用命令&#xff1a;nvcc …

做数据采集,你真的了解PLC插槽号吗?

有很多PLC可以在系统里配置多个独立CPU&#xff0c;各自有自己的任务。也有一些PLC&#xff0c;虽然只有一个CPU&#xff0c;但是&#xff0c;其位置是可变的。外部进行数据采集时&#xff0c;首先要搞明白采集目标是哪个CPU&#xff0c;否则&#xff0c;就会张冠李戴&#xff…