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

【嵌入式软件C编程】主函数free子函数malloc地址的两种方式以及注意事项

本文档主要记录嵌入式C语言在子函数中应用malloc函数的方式,在实际项目中内存管理特别重要

一般在主函数中(main)使用malloc函数,然后在通过free函数进行释放内存,但有时候如果必须在子函数长调用malloc函数该怎样进行内存释放呢?

📋 个人简介

  • 💖 作者简介:大家好,我是喜欢记录零碎知识点的小菜鸟。😎
  • 📝 个人主页:欢迎访问我的 Ethernet_Comm 博客主页🔥
  • 🎉 支持我:点赞👍+收藏⭐️+留言📝
    -📣 系列专栏:嵌入式C编程🍁
  • 💬格言:写文档啊不是写文章,重要的还是直白!🔥
  • 方式1:通过函数返回值
  • 方式2:通过二级指针传参

【嵌入式软件C编程】主函数free子函数malloc地址的两种方式以及注意事项

    • 1. 代码展示
    • 2. 实验结果
    • 3. 原理介绍

1. 代码展示

直接展示测试代码:

/*无参数,函数返回 malloc 的地址 */
int * test_malloc_ins(){int *fun_val  = (int)malloc(sizeof(int));printf("test_malloc_ins fun_val addr  = 0x%08x \r\n",fun_val);return fun_val;
}/*无返回值,函数通过二级指针传递地址*/
void test_malloc_ins_2(int **pointer){int *fun_val  = (int)malloc(sizeof(int));printf("test_malloc_ins_2 fun_val addr  = 0x%08x \r\n",fun_val);* pointer = fun_val;
}int main()
{int *main_test;printf("============测试1,函数返回值=============== \r\n");main_test = test_malloc_ins();printf(" main_test addr  = 0x%08x \r\n",main_test);printf("**** free ***** \r\n");free(main_test);main_test = NULL;printf("after free main main_test addr  = 0x%08x \r\n",main_test);printf("\r\n");printf("\r\n");printf("\r\n");printf("============测试2,函数不带返回值:二级指针法=============== \r\n");int *p = NULL;test_malloc_ins_2(&p);printf("*p  = 0x%08x \r\n",p);free(p);p = NULL;printf("after free  ,*p  = 0x%08x \r\n",p);
}

2. 实验结果

在这里插入图片描述

3. 原理介绍

C/C++中在子函数中使用malloc分配内存和free释放内存的方法

相关文章:

【嵌入式软件C编程】主函数free子函数malloc地址的两种方式以及注意事项

本文档主要记录嵌入式C语言在子函数中应用malloc函数的方式,在实际项目中内存管理特别重要 一般在主函数中(main)使用malloc函数,然后在通过free函数进行释放内存,但有时候如果必须在子函数长调用malloc函数该怎样进行…...

金融工程学学习笔记第一章

第一章 金融工程概述 什么是金融工程 金融工程的含义 金融工程: 金融工程:一门融现代金融学、数理和工程方法与信息技术与一体的新兴交叉型学科。 工程是指以某种设想的目标为依据,应用有关科学知识和技术手段,通过有组织的一…...

CentOS 7 编译ZooKeeper C客户端

简介 本文主要讲解:Zookeeper C客户端库在Centos 7上的编译,使用的Zookeeper版本为3.4.13。 工具安装 安装ant 和cppunit-devel工具: [rootlocalhost source_code]# yum install -y cppunit-devel 已加载插件:fastestmirror L…...

【2023年数学建模国赛】A题解题思路

2023年数学建模国赛A题解题思路 问题1: 要计算定日镜场的年平均光学效率和年平均输出热功率,以及单位镜面面积年平均输出热功率,我们可以按照以下步骤进行: 遍历所有定日镜的位置,根据给定的定日镜尺寸和安装高度&am…...

人们对区块链的认识开始变得深入和完善,另一条新路径开始衍生

当区块链行业的发展进入到深水区,特别是当有关区块链的狂热与躁动开始退场,仅仅只是主打区块链的概念,而没有找到区块链与现实商业联通的方式和方法,依然成为困扰区块链发展的一大症结。   事实上,从区块链被人们认识…...

关于Comparable、Comparator接口返回值决定顺序的问题

Comparable和Comparator接口都是实现集合中元素的比较、排序的,下面先简单介绍下他们的用法。 1. 使用示例 public class Person {private String name;private Integer age;public Person() {}public Person(String name, Integer age) {this.name name;this.ag…...

js 根据键判断值

最原始的写法&#xff1a; 改进后的写法&#xff1a; const DeviceTypeObj {SO2: "SO<sub>2</sub>",CO: "CO",NO: "NO",NO2: "NO<sub>2</sub>",O3: "O<sub>3</sub>", let value Dev…...

堆排序,以及大顶堆构造过程Java实现

import java.util.Arrays;public class Main {public static void main(String[] args) {int a[] new int[] { 1, 1, 23, 456, 0 };// int a初始化方式int bb[] { 1, 2, 3, 4 };// int c[5] {1,2,34,5,6};//错误int d[] new int[6]; // 初始为0// int e[] new int[5]{1,2,…...

【C++】类的封装 ① ( 类和对象 | 面向对象三大特征 - 封装 继承 多态 | 类的封装引入 )

文章目录 一、类和对象1、类和对象概念2、代码示例 - 定义类和对象 二、类的封装1、面向对象三大特征2、类的封装引入 一、类和对象 1、类和对象概念 " 面向对象编程 " 是一种 " 编程范式 " , 可以适用于所有的 高级语言 , C 也包括在内 ; 面向对象编程 基…...

Docker原理详细剖析-Namespace

一、简介 docker容器技术从2013年开始火了以后&#xff0c;2014年左右当时有幸在学校能和学院教授一起做些项目以及学习。其中docker技术在当时来说还算是比较新的技术&#xff0c;国内关于这块的资料以及使用也才刚刚开始&#xff0c;讨论docker技术&#xff0c;算是相对时髦的…...

sql:SQL优化知识点记录(九)

&#xff08;1&#xff09;小表驱动大表 对sql调优的分析&#xff1a; 排序优化&#xff1a; 数据库的连接方式&#xff0c;里面的数据尽量这样连接&#xff0c;尽量选择第一个方式&#xff0c;因为两个表的连接一共建立5次连接&#xff0c;第二个建立1000次连接&#xff0c;从…...

【PowerQuery】PowerQuery导入JSON数据

Json数据是目前使用的最为频繁和广泛的一种数据交换格式,JSON的全称为JavaScript Object Notation。Json 主要用于在互联网的消息的数据交换信息传递,他的格式与XML有什么区别呢?为什么不用XML,用Json有啥好处呢?我们接下来讨论下Json相比XML的优势: XML传递的数据过多服…...

bootstrap 主题

颜色值 根据等级 primarysecondarysuccessinfowarningdangerlightdark 根据名字 blackwhiteblueindigopurplepinkredorangeyellowgreentealcyangraygray-darkbrown 好像是self 加的 根据颜色值的转化 var 变量 –bs-**** 比如&#xff1a;–bs-blue&#xff0c;–bs-pri…...

FPGA 学习笔记:Vivado 工程管理技巧

前言 当前使用 Xilinx 的 FPGA,所以需要熟悉 Xilinx FPGA 的 开发利器 Vivado 的工程管理方法 这里初步列举一些实际 Xilinx FPGA 开发基于 Vivado 的项目使用到的工程的管理技巧 代码管理 做过嵌入式软件或者其他软件开发的工程技术人员,都会想到使用代码管理工具,如 SVN 、…...

Java低代码开发:jvs-list(列表引擎)功能(二)字段及样式配置

字段的增减 进入列表页设计器-页表设计界面&#xff0c;点击新增一行、或者删除按钮&#xff0c;可以对字段进行增减操作&#xff0c;如果对于权限的列表页&#xff0c;可以使用批量创建字段的按钮&#xff1a; 字段的批量设置&#xff0c;点击批量添加如下图所示 字段为中文名…...

【Java】线程都有哪几种状态

文章目录 前言传统线程模型&#xff08;操作系统&#xff09;中线程状态Java线程中的状态线程的运行流程 前言 首先我们要知道&#xff0c;在传统&#xff08;操作系统&#xff09;的线程模型中线程被分为五种状态&#xff0c;在java线程中&#xff0c;线程被分为六种状态。 …...

为什么服务端会有那么多的 TimeWait ?

工作中无论是开发环境还是线上环境&#xff0c;我们都出现过大量的 timewait 状态的连接&#xff0c;例如下面这个例子 服务端简单的开辟一个 web server 监听 9966 端口 客户端进行疯狂的请求服务端 瞬间就可以看到咱们服务端的出现大量的 TIME_WAIT 状态的连接 这个时候&…...

任意文件读取及漏洞复现

文章目录 渗透测试漏洞原理任意文件读取1. 任意文件读取概述1.1 漏洞成因1.2 漏洞危害1.3 漏洞分类1.4 任意文件读取1.4.1 文件读取1.4.2 任意文件读取1.4.3 权限问题 1.5 任意文件下载1.5.1 一般情况1.5.2 PHP实现1.5.3 任意文件下载 2. 任意文件读取攻防2.1 路径过滤2.1.1 过…...

目前的一些关于机器学习的感悟

目前的一些关于机器学习的想法 大家一直都在说深度学习和积极学习&#xff0c;当我在本科的时候&#xff0c;就听到很多关于这方面的东西&#xff0c;但当时自己对于这些东西的概念较为模糊&#xff0c;随着研究生进一步的学习&#xff0c;我想讲一下&#xff0c;到目前我所理…...

salesforce从sandbox部署到生产环境的自定义字段权限没有成功上载

salesforce从sandbox部署到生产环境的自定义字段权限没有成功上载 只将字段名称和类型上载了。 查阅&#xff1a; https://help.salesforce.com/s/articleView?idsf.deploy_special_behavior.htm&type5 显示&#xff1a; 自定义字段 从 API 版本 30.0 开始&#xff0c;…...

CVPR 2025 MIMO: 支持视觉指代和像素grounding 的医学视觉语言模型

CVPR 2025 | MIMO&#xff1a;支持视觉指代和像素对齐的医学视觉语言模型 论文信息 标题&#xff1a;MIMO: A medical vision language model with visual referring multimodal input and pixel grounding multimodal output作者&#xff1a;Yanyuan Chen, Dexuan Xu, Yu Hu…...

ubuntu搭建nfs服务centos挂载访问

在Ubuntu上设置NFS服务器 在Ubuntu上&#xff0c;你可以使用apt包管理器来安装NFS服务器。打开终端并运行&#xff1a; sudo apt update sudo apt install nfs-kernel-server创建共享目录 创建一个目录用于共享&#xff0c;例如/shared&#xff1a; sudo mkdir /shared sud…...

条件运算符

C中的三目运算符&#xff08;也称条件运算符&#xff0c;英文&#xff1a;ternary operator&#xff09;是一种简洁的条件选择语句&#xff0c;语法如下&#xff1a; 条件表达式 ? 表达式1 : 表达式2• 如果“条件表达式”为true&#xff0c;则整个表达式的结果为“表达式1”…...

三体问题详解

从物理学角度&#xff0c;三体问题之所以不稳定&#xff0c;是因为三个天体在万有引力作用下相互作用&#xff0c;形成一个非线性耦合系统。我们可以从牛顿经典力学出发&#xff0c;列出具体的运动方程&#xff0c;并说明为何这个系统本质上是混沌的&#xff0c;无法得到一般解…...

如何在网页里填写 PDF 表格?

有时候&#xff0c;你可能希望用户能在你的网站上填写 PDF 表单。然而&#xff0c;这件事并不简单&#xff0c;因为 PDF 并不是一种原生的网页格式。虽然浏览器可以显示 PDF 文件&#xff0c;但原生并不支持编辑或填写它们。更糟的是&#xff0c;如果你想收集表单数据&#xff…...

华硕a豆14 Air香氛版,美学与科技的馨香融合

在快节奏的现代生活中&#xff0c;我们渴望一个能激发创想、愉悦感官的工作与生活伙伴&#xff0c;它不仅是冰冷的科技工具&#xff0c;更能触动我们内心深处的细腻情感。正是在这样的期许下&#xff0c;华硕a豆14 Air香氛版翩然而至&#xff0c;它以一种前所未有的方式&#x…...

AirSim/Cosys-AirSim 游戏开发(四)外部固定位置监控相机

这个博客介绍了如何通过 settings.json 文件添加一个无人机外的 固定位置监控相机&#xff0c;因为在使用过程中发现 Airsim 对外部监控相机的描述模糊&#xff0c;而 Cosys-Airsim 在官方文档中没有提供外部监控相机设置&#xff0c;最后在源码示例中找到了&#xff0c;所以感…...

免费数学几何作图web平台

光锐软件免费数学工具&#xff0c;maths,数学制图&#xff0c;数学作图&#xff0c;几何作图&#xff0c;几何&#xff0c;AR开发,AR教育,增强现实,软件公司,XR,MR,VR,虚拟仿真,虚拟现实,混合现实,教育科技产品,职业模拟培训,高保真VR场景,结构互动课件,元宇宙http://xaglare.c…...

【Linux系统】Linux环境变量:系统配置的隐形指挥官

。# Linux系列 文章目录 前言一、环境变量的概念二、常见的环境变量三、环境变量特点及其相关指令3.1 环境变量的全局性3.2、环境变量的生命周期 四、环境变量的组织方式五、C语言对环境变量的操作5.1 设置环境变量&#xff1a;setenv5.2 删除环境变量:unsetenv5.3 遍历所有环境…...

Modbus RTU与Modbus TCP详解指南

目录 1. Modbus协议基础 1.1 什么是Modbus? 1.2 Modbus协议历史 1.3 Modbus协议族 1.4 Modbus通信模型 🎭 主从架构 🔄 请求响应模式 2. Modbus RTU详解 2.1 RTU是什么? 2.2 RTU物理层 🔌 连接方式 ⚡ 通信参数 2.3 RTU数据帧格式 📦 帧结构详解 🔍…...