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

news2024/11/26 10:35:58

本文档主要记录嵌入式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释放内存的方法

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

[HDCTF 2023]YamiYami

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言涉及知识点解题详细过程session伪造反弹shell 前言 从暑假末尾一直搁置,当时卡在反弹shell搞得离flag就差一步。不过最近一两天学习完反弹shell的知…

面试算法-数据结构二

大厂算法面试 1) 图论 2) 大数据 3)动态规划 优秀的算法往往取决于你采取那种数据结构 高级数据结构 1)优先队列 2)图 3)前缀树 4)线段树 5)树状数组 在分析问题的时候&a…

OB Cloud 初体验

文章来源:韩锋频道 韩锋 数据库行业资深从业者,著有《SQL 优化最佳实践》、《数据库高效优化》等数据库相关著作。 OceanBase(下文简称OB) 作为国内一款优秀的分布式数据库,这些年来发展很快,在金融、电商…

UDP协议结构及其注意事项

UDP报文结构 UDP报文结构主要是由两个部分组成的:UDP头部和数据部分。 UDP头部 源端口号:16位字段,指示数据发送方的端口号。目的端口号:16位字段,指示数据接收方端口号。UDP报文长度:16位字段&#xff0…

new HashMap{{put(“a“,“b“)}}

如题,这是什么鬼? Runnable r new Runnable(){Overridepublic void run() {}}; 上面这种写法大家不陌生吧,实际上 就是 定义了一个匿名内部类。 比如:下面这个就是 定义了一个 匿名的Test子类,旁边那个向下的箭头就…

Lua02——应用场景及环境安装

应用场景 是当今游戏领域使用最广泛的脚本语言之一。 搭配 OpenResty 使用,可以扩展Nginx服务器的功能,使用者仅需要编写Lua代码就能轻松完成业务逻辑。 与 Redis 结合。 Adobe Photoshop Lightroom 搭配 Lua 编写插件。 与游戏结合: C/…

DNS域名解析 不同网段的 实验

路漫漫其修远兮,吾将上下而求索 前言 知识应该是 有难宜简,用简单的语言讲清楚,而不是干拧螺丝的事,却说着造火箭的理论。 (尤其是大学讲台上的那一部分人,想想人家的学费,你的工资&#xff…

震惊!可视化大屏都卷成这样了!

如果你还认为可视化大屏只是一个屏幕展示几个数据、图表,那就大错特错了。进入2023年,可视化大屏都内卷到可以实时更新、多维动态、模板一键套用了。 奥威BI系统可视化大屏特点: 1、实时更新 所有取数都基于底层数据,当底层数据…

java开源 VR全景商城 saas商城 b2b2c商城 o2o商城 积分商城 秒杀商城 拼团商城 分销商城 短视频商城 小程序商城搭建

1. 涉及平台 平台管理、商家端(PC端、手机端)、买家平台(H5/公众号、小程序、APP端(IOS/Android)、微服务平台(业务服务) 2. 核心架构 Spring Cloud、Spring Boot、Mybatis、Redis 3. 前端框架…

【Node.js】—基本知识点总结

【Node.js】—基本知识总结 一、命令行常用操作 二、Node.js注意点 Node.js中不能使用BOM和DOM操作 总结 三、Buffer buffer是一个类似于数组的对象,用于表示固定长度的字节序列buffer的本质是一段内存空间,专门用来处理二进制数据 特点:…

第15章_锁: MySQL并发访问相同记录以及从数据操作的类型划分锁(读锁、写锁)

事务的 隔离性 由这章讲述的 锁 来实现。 1. 概述 锁是计算机协调多个进程或线程并发访问某一资源的机制. 在程序开发中会存在多线程同步的问题, 当多个线程并发访问某个数据的时候, 尤其是针对一些敏感数据(订单, 金额), 我们就需要保证这个数据在任何时刻最多只有一个线…

Java Stream 流对象(实用技巧)

目录 一、InputStream & OutputStream 1.1、InputStream 和 OutputStream 一般使用 1.2、特殊使用 1.2.1、如何表示文件读取完毕?(DataInputStream) 1.2.2、字符读取/文本数据读取(Scanner) 1.2.3、文件的随机…

UG\NX二次开发 选择基准平面 UF_UI_select_with_single_dialog

文章作者:里海 来源网站:王牌飞行员_里海_里海NX二次开发3000例,里海BlockUI专栏,C\C++-CSDN博客 简介: 使用UF_UI_select_with_single_dialog函数,选择基准平面。 效果: 代码: #include "me.hpp"//过滤 基准平面 UF_datum_plane_type int InitProcDa…

虹科产品|HK-TrueNAS开放式存储平台被评为数字公益产品

一、HK-TrueNAS 被评为数字公益产品 数字公共产品联盟(Digital Public Goods Alliance)是一项多方利益相关者倡议,旨在促进数字公益(DPG)的发现、开发、使用和投资。数字公共产品的定义是所有人都能免费获取的资源或服…

Linux下的系统编程——进程间的通信(九)

一、进程间通信常用方式 IPC方式: Linux环境下,进程地址空间相互独立,每个进程各自有不同的用户地址空间。任何一个进程的全局变量在另一个进程中都看不到,所以进程和进程之间不能相互访问,要交换数据必须通过内核&am…

螺母加工工艺流程

螺母是具有内螺纹并与螺栓配合使用的紧固件,具有内螺纹并与螺杆配合使用用以传递运动或动力的机械零件,是自动化行业中的重要传动零部件之一。大家知道螺母的加工工艺吗? 一般来说,螺母的加工工艺流程包括原材料采购、初加工、调质、精加工、…

vue基础知识六:v-show和v-if有什么区别?使用场景分别是什么?

一、v-show与v-if的共同点 我们都知道在 vue 中 v-show 与 v-if 的作用效果是相同的(不含v-else)&#xff0c;都能控制元素在页面是否显示 在用法上也是相同的 <Model v-show"isShow" /> <Model v-if"isShow" />当表达式为true的时候&#…

网管实战⑼:配置华为S5720交换机

配置好汇聚交换机后&#xff0c;需要根据单位情况配置具体的接入交换机。 自从2019年12月底配置好交换机后&#xff0c;基本上都没有怎么操作交换机了。那时候使用的是H3C交换机&#xff0c;主要是H3C S7706、H3C S5120、H3C S5130、H3C S5500、H3C S3600等型号的交换机&#x…

微信公众号从0到1开发

之前做项目有就接触微信公众号的接入&#xff0c;但没有将过程记录成笔记&#xff0c;这几天在做的项目也是需要集成微信公众号&#xff0c;正好将在做的过程记录成笔记 文章目录 0、准备工作一、公众号平台1、参数解释2、获取域名 二、后端配置 一、第一阶段-公众号接入1、接…

第4节-PhotoShop基础课程-Ps格式

文章目录 前言1.像素认识2. 图层认识1.图层有上下前后遮挡关系2.橡皮檫可以擦掉选择图层的像素3.新建图层4.新建删除图层 3. 分辨率的理解4. 图片格式A 前言 本章主要介绍PS常用格式 1.像素认识 下面每个格子就是像素 2. 图层认识 1.图层有上下前后遮挡关系 2.橡皮檫可以擦…