【ARMv8M Cortex-M33 系列 8.1 -- RT-Thread 堆内存 检查命令 free 实现及介绍】
文章目录
- RT-Thread 堆内存 检查命令 free 实现及介绍
- rt_memory_info 函数验证
RT-Thread 堆内存 检查命令 free 实现及介绍
在RT-Thread系统中,通常可以通过rt_memory_info函数获取当前的堆内存使用信息,然后你可以包装这个函数来显示剩余的堆空间。rt_memory_info实现见:
rt-thread/src/mem.c:
void rt_memory_info(rt_uint32_t *total,rt_uint32_t *used,rt_uint32_t *max_used)
{if (total != RT_NULL)*total = mem_size_aligned;if (used != RT_NULL)*used = used_mem;if (max_used != RT_NULL)*max_used = max_mem;
}
rt-thread 中其实已经实现了cmd_free 函数,可以使用这个函数来查看当前堆的使用情况:
#ifdef RT_USING_HEAP
int cmd_free(int argc, char **argv)
{rt_uint32_t total = 0, used = 0, max_used = 0;rt_memory_info(&total, &used, &max_used);rt_kprintf("total : %d\n", total);rt_kprintf("used : %d\n", used);rt_kprintf("maximum : %d\n", max_used);return 0;
}
MSH_CMD_EXPORT_ALIAS(cmd_free, free, Show the memory usage in the system.);
#endif /* RT_USING_HEAP */
所以在终端执行free 命令即可查看堆的使用情况:
msh >help
RT-Thread shell commands:
list - list all commands in system
list_timer - list timer in system
list_mempool - list memory pool in system
list_memheap - list memory heap in system
list_msgqueue - list message queue in system
list_mailbox - list mail box in system
list_mutex - list mutex in system
list_event - list event in system
list_sem - list semaphore in system
list_thread - list thread
version - show RT - Thread version information
clear - clear the terminal screen
hello - say hello world
free - Show the memory usage in the system.
ps - List threads in the system.
help - RT - Thread shell help.
rt_memory_info 函数验证
如下实现了一个测试函数,在函数开始的时候查看当前堆使用了多少,然后再进行rt_malloc(1024) 之后再查看下堆使用了多少,通过前后对比可以看出rt_memory_info函数获取的信息是否正确。
#include <rtthread.h>
#include <pthread.h>#define TEST_MALLOC_SIZE 1024static int mem_check_test(void)
{char *ptr = RT_NULL;rt_uint32_t total = 0, used_pre = 0, max_used = 0;rt_uint32_t used_next = 0;rt_memory_info(&total, &used_pre, &max_used);ptr = (char *)rt_malloc(TEST_MALLOC_SIZE);if (ptr == RT_NULL) {rt_kprintf("mem check test failed\n");return -RT_ENOMEM;}rt_memory_info(&total, &used_next, &max_used);if ((used_next - used_pre) != TEST_MALLOC_SIZE + 16) {rt_kprintf("mem check test failed\n""mem used_pre: %d, mem used_next:%d\n",used_pre, used_next);rt_free(ptr);return -RT_ERROR;}rt_kprintf("mem check test ok\n");rt_free(ptr);return RT_EOK;
}
INIT_APP_EXPORT(mem_check_test);
关于free命令的本地测试如下:

通过执行free命令之后可以看到一共有多少heap和已经使用了多少。
通常需要在跑完测试用例后不能影响heap的大小,简单点说就是你的测试case不能导致内存泄露。
相关文章:
【ARMv8M Cortex-M33 系列 8.1 -- RT-Thread 堆内存 检查命令 free 实现及介绍】
文章目录 RT-Thread 堆内存 检查命令 free 实现及介绍rt_memory_info 函数验证 RT-Thread 堆内存 检查命令 free 实现及介绍 在RT-Thread系统中,通常可以通过rt_memory_info函数获取当前的堆内存使用信息,然后你可以包装这个函数来显示剩余的堆空间。rt…...
milvus Delete API流程源码分析
Delete API执行流程源码解析 milvus版本:v2.3.2 整体架构: Delete 的数据流向: 1.客户端sdk发出Delete API请求。 from pymilvus import (connections,Collection, )print("start connecting to Milvus") connections.connect("default", host"192…...
CentOS使用Docker搭建Halo网站并实现无公网ip远程访问
🔥博客主页: 小羊失眠啦. 🎥系列专栏:《C语言》 《数据结构》 《C》 《Linux》 《Cpolar》 ❤️感谢大家点赞👍收藏⭐评论✍️ 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默&…...
【JVM】垃圾回收算法
📝个人主页:五敷有你 🔥系列专栏:JVM ⛺️稳中求进,晒太阳 垃圾回收算法 Java是如何实现垃圾回收的呢?简单来说,垃圾回收就做两件事 找到内存中存活的对象释放不在存活对象的内存&…...
如何和将原始request的Header中的值传递给openfeign请求的Header? 以及又如何获取openfeign请求中Header中的值
如何和将原始request的Header中的值传递给openfeign请求的Header? 以及又如何获取openfeign请求中Header中的值 如何和将原始request的Header中的值传递给openfeign请求的Header参考 [https://www.jb51.net/article/282522.htm](https://www.jb51.net/article/28252…...
Flink 侧输出流(SideOutput)
🌸在平时大部分的 DataStream API 的算子的输出是单一输出,也就是某一种或者说某一类数据流,流向相同的地方。 🌸在处理不同的流中,除了 split 算子,可以将一条流分成多条流,这些流的数据类型也…...
C语言中关于#include的一些小知识
写代码的过程中,因为手误,重复包含了头文件 可以看到没有报错 如果是你自己编写的头文件,那么如果没加唯一包含标识的话,那么编译器会编译报错的。如果是系统自带的头文件,由于其每个头文件都加了特殊标识,…...
DSP芯片 机器码下载方法 【主要 “扯” 用Uniflash下载的方法】
还是以德州仪器的TMS320F28335芯片为 “栗子”,说说这事儿。 编制好的程序经过开发环境可以编译成扩展名为 .out 文件,这个文件就是DSP可以运行机器码,我们把这个文件下载到 DSP芯片中的程序区, 下载好了,这个芯片原…...
速盾网络:CDN用几天关了可以吗?安全吗?
在使用CDN(内容分发网络)时,有时候会考虑暂时关闭或暂停使用CDN服务的情况。但是,对于关闭CDN服务的时间长短以及安全性问题,很多人可能存在疑问。在本文中,我们将讨论CDN使用中关闭几天是否安全以及相关注…...
MR混合现实情景实训教学系统在高空作业课堂中的应用
高空作业是一项高风险的工作,对于从业者来说,不仅需要具备专业的技能,还需要有丰富的实践经验。然而,传统的课堂教学往往只能通过理论讲解和模拟训练来传授知识,无法提供真实的实践环境。而MR混合现实情景实训教学系统…...
Windows系统中定时执行python脚本
背景:本地Windows系统指定目录下会有文件的修改新增,这些变化的文件需要定时的被上传到git仓库中,这样不需要每次变更手动上传了。 首先编写一个检测文件夹下文件变化并且上传git仓库的python脚本(确保你已经在E:\edc_workspace\data_edc_et…...
HashMap 源码学习-jdk1.8
1、一些常量的定义 这里针对MIN_TREEIFY_CAPACITY 这个值进行解释一下。 java8里面,HashMap 的数据结构是数组 (链表或者红黑树),每个数组节点下可能会存在链表和红黑树之间的转换,当同一个索引下面的节点超过8个时…...
WebStorm 2023:让您更接近理想的开发环境 mac/win版
JetBrains WebStorm 2023激活版下载是一款强大而智能的Web开发工具,专为提高开发人员的生产力而设计。这款编辑器提供了许多先进的代码编辑功能,以及一系列实用的工具和插件,可帮助您更快地编写、调试和测试代码。 WebStorm 2023软件获取 We…...
java面试题:数字与字母的映射表
前言 好记性不如烂笔头。 问题: 现在有一个数字与字母的映射表,且有以下规则: 映射表: 数字 字母 3 A 7 B 9 C 规则: 1.碰到当前数字时,使用字母替换,例如,3-> A 2.碰到当前数…...
Jmeter教程-JMeter 环境安装及配置
Jmeter教程 JMeter 环境安装及配置 在使用 JMeter 之前,需要配置相应的环境,包括安装 JDK 和获取 JMeter ZIP 包。 安装JDK 1.JDK下载 示例环境为Windows11环境,读者应根据实际环境下载JDK的安装包。 JDK下载地址: Java21 下载 …...
十大基础排序算法
排序算法分类 排序:将一组对象按照某种逻辑顺序重新排列的过程。 按照待排序数据的规模分为: 内部排序:数据量不大,全部存在内存中;外部排序:数据量很大,无法一次性全部存在内存中,…...
IP协议及相关技术协议
一、IP基本认识 1. IP的作用 IP在TCP/IP模型中处于网络层,网络层的主要作用是实现主机与主机之间的通信,而IP的作用是在复杂的网络环境中将数据包发送给最终目的主机。 2. IP与MAC的关系 简单而言,MAC的作用是实现“直连”的两个设备之通信…...
小红书x-s算法及补环境 单旋转验证码
前言 大家好呀!新的一年,先祝大家新年快乐咯.祝大家逆向,风控都一把过咯. 新年第一篇文章,后续会持续更新哦! 春晚见证了中国经济的新风口,今年春晚互联网企业赞助商就两家,小红书和京东.小红书类似国外的ins,有预感未来小红书会大火,所以写了这篇文章,有需要的加我,联系方式…...
代码检测规范和git提交规范
摘要:之前开发的项目,代码检测和提交规范都是已经配置好的,最近自己新建的项目就记录下相关配置过程。 1. ESlint配置 2013年6月创建开源项目,提供一个插件化的JavaScript代码检测工具,创建项目是生成的eslintrc.js文…...
Elasticsearch:什么是搜索引擎?
搜索引擎定义 搜索引擎是一种软件程序或系统,旨在帮助用户查找存储在互联网或特定数据库中的信息。 搜索引擎的工作原理是对各种来源的内容进行索引和编目,然后根据用户的搜索查询向用户提供相关结果列表。 搜索引擎对于希望快速有效地查找特定信息的用…...
ms-swift微调框架入门:快速掌握LoRA微调与模型合并技巧
ms-swift微调框架入门:快速掌握LoRA微调与模型合并技巧 1. 引言 在当今大模型技术快速发展的背景下,如何高效地对大型语言模型进行微调成为了许多开发者和研究者的关注焦点。ms-swift作为一款强大的微调框架,提供了丰富的功能和技术支持&am…...
从单片机到汽车座舱:ThreadX RTOS在嵌入式领域的真实应用场景与选型思考
ThreadX RTOS在汽车座舱与工业控制中的实战选型指南 当特斯拉Model S的17英寸触控屏在2012年首次亮相时,很少有人注意到支撑这套系统的幕后英雄——实时操作系统。如今,从智能手表到航空电子设备,实时操作系统(RTOS)已成为嵌入式世界的隐形支…...
编译原理避坑指南:自顶向下语法分析的5个常见错误及解决方法
编译原理避坑指南:自顶向下语法分析的5个常见错误及解决方法 第一次接触自顶向下语法分析时,我盯着那个无限循环的递归文法整整三天没想明白——为什么明明按照教材步骤操作,程序却始终报错?直到助教指出我忽略了间接左递归的隐蔽…...
语义分割竞赛必备:5种Loss函数组合效果对比(含Dice+Focal Loss调参指南)
语义分割竞赛进阶:5种损失函数组合实战评测与调参策略 在Kaggle等数据竞赛中,语义分割任务的性能提升往往取决于损失函数的巧妙选择与组合。不同于常规分类任务,多类别像素级预测需要处理极端类别不平衡、边界模糊等独特挑战。本文将深入剖析…...
番茄矮砧密植:水肥一体化系统铺设全指南
大棚里,老周的番茄挂果累累,红绿相间。“这套系统让我的番茄产量翻了一番,”他指着地里的滴灌设备说,“不仅省工省力,品质还特别稳定。”认识番茄矮砧密植番茄矮砧密植,简单来说就是选用矮生品种࿰…...
别再瞎找了!AI论文软件2026最新测评与推荐
2026年真正好用的AI论文软件,核心看生成的论文质量、低AI味、格式正确、学术适配四大指标。综合实测,千笔AI、ThouPen、豆包、DeepSeek、Grammarly 是当前最值得推荐的梯队,覆盖从免费到付费、从中文到英文、从文科到理工的全场景需求。 一、…...
谈谈你对springAop动态代理的理解?
面试 你要调用目标方法,不直接调用,而是交给代理对象,代理对象会先做额外功能,再调用原方法,最后再收尾。 至于叫动态代理的原因,是因为这个代理不是你手动写死的,而是程序在运行期间动态生成…...
K230目标检测实战:手把手教你用Labelme标注数据并一键转成VOC格式(附避坑指南)
K230目标检测实战:高效数据标注与VOC格式转换全攻略 当你第一次接触K230开发板进行目标检测项目时,数据准备往往是最大的拦路虎。特别是从原始图片到符合AI_Cube要求的VOC格式数据集,这个过程充满了各种"坑"。本文将分享一套经过实…...
Ubuntu 20.04 + ROS Noetic 下,3DSystems Touch HID 新版设备(单USB口)保姆级配置避坑指南
Ubuntu 20.04 ROS Noetic 下3DSystems Touch HID新版设备终极配置指南 刚拿到2024年新款3DSystems Touch HID设备的开发者们,是否被网上混杂的老旧教程搞得晕头转向?作为一款专业级力反馈设备,Touch在机器人控制和VR/AR开发中有着不可替代的…...
Realistic Vision V5.1 创意工作流:利用GitHub管理提示词库与生成作品版本
Realistic Vision V5.1 创意工作流:利用GitHub管理提示词库与生成作品版本 你有没有遇到过这种情况?团队里每个人都在用Realistic Vision V5.1生成图片,但大家用的提示词五花八门,好的描述词散落在各个聊天记录里,生成…...
