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

【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系统中&#xff0c;通常可以通过rt_memory_info函数获取当前的堆内存使用信息&#xff0c;然后你可以包装这个函数来显示剩余的堆空间。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远程访问

&#x1f525;博客主页&#xff1a; 小羊失眠啦. &#x1f3a5;系列专栏&#xff1a;《C语言》 《数据结构》 《C》 《Linux》 《Cpolar》 ❤️感谢大家点赞&#x1f44d;收藏⭐评论✍️ 前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&…...

【JVM】垃圾回收算法

&#x1f4dd;个人主页&#xff1a;五敷有你 &#x1f525;系列专栏&#xff1a;JVM ⛺️稳中求进&#xff0c;晒太阳 垃圾回收算法 Java是如何实现垃圾回收的呢&#xff1f;简单来说&#xff0c;垃圾回收就做两件事 找到内存中存活的对象释放不在存活对象的内存&…...

如何和将原始request的Header中的值传递给openfeign请求的Header? 以及又如何获取openfeign请求中Header中的值

如何和将原始request的Header中的值传递给openfeign请求的Header&#xff1f; 以及又如何获取openfeign请求中Header中的值 如何和将原始request的Header中的值传递给openfeign请求的Header参考 [https://www.jb51.net/article/282522.htm](https://www.jb51.net/article/28252…...

Flink 侧输出流(SideOutput)

&#x1f338;在平时大部分的 DataStream API 的算子的输出是单一输出&#xff0c;也就是某一种或者说某一类数据流&#xff0c;流向相同的地方。 &#x1f338;在处理不同的流中&#xff0c;除了 split 算子&#xff0c;可以将一条流分成多条流&#xff0c;这些流的数据类型也…...

C语言中关于#include的一些小知识

写代码的过程中&#xff0c;因为手误&#xff0c;重复包含了头文件 可以看到没有报错 如果是你自己编写的头文件&#xff0c;那么如果没加唯一包含标识的话&#xff0c;那么编译器会编译报错的。如果是系统自带的头文件&#xff0c;由于其每个头文件都加了特殊标识&#xff0c…...

DSP芯片 机器码下载方法 【主要 “扯” 用Uniflash下载的方法】

还是以德州仪器的TMS320F28335芯片为 “栗子”&#xff0c;说说这事儿。 编制好的程序经过开发环境可以编译成扩展名为 .out 文件&#xff0c;这个文件就是DSP可以运行机器码&#xff0c;我们把这个文件下载到 DSP芯片中的程序区&#xff0c; 下载好了&#xff0c;这个芯片原…...

速盾网络:CDN用几天关了可以吗?安全吗?

在使用CDN&#xff08;内容分发网络&#xff09;时&#xff0c;有时候会考虑暂时关闭或暂停使用CDN服务的情况。但是&#xff0c;对于关闭CDN服务的时间长短以及安全性问题&#xff0c;很多人可能存在疑问。在本文中&#xff0c;我们将讨论CDN使用中关闭几天是否安全以及相关注…...

MR混合现实情景实训教学系统在高空作业课堂中的应用

高空作业是一项高风险的工作&#xff0c;对于从业者来说&#xff0c;不仅需要具备专业的技能&#xff0c;还需要有丰富的实践经验。然而&#xff0c;传统的课堂教学往往只能通过理论讲解和模拟训练来传授知识&#xff0c;无法提供真实的实践环境。而MR混合现实情景实训教学系统…...

Windows系统中定时执行python脚本

背景&#xff1a;本地Windows系统指定目录下会有文件的修改新增&#xff0c;这些变化的文件需要定时的被上传到git仓库中&#xff0c;这样不需要每次变更手动上传了。 首先编写一个检测文件夹下文件变化并且上传git仓库的python脚本(确保你已经在E:\edc_workspace\data_edc_et…...

HashMap 源码学习-jdk1.8

1、一些常量的定义 这里针对MIN_TREEIFY_CAPACITY 这个值进行解释一下。 java8里面&#xff0c;HashMap 的数据结构是数组 &#xff08;链表或者红黑树&#xff09;&#xff0c;每个数组节点下可能会存在链表和红黑树之间的转换&#xff0c;当同一个索引下面的节点超过8个时…...

WebStorm 2023:让您更接近理想的开发环境 mac/win版

JetBrains WebStorm 2023激活版下载是一款强大而智能的Web开发工具&#xff0c;专为提高开发人员的生产力而设计。这款编辑器提供了许多先进的代码编辑功能&#xff0c;以及一系列实用的工具和插件&#xff0c;可帮助您更快地编写、调试和测试代码。 WebStorm 2023软件获取 We…...

java面试题:数字与字母的映射表

前言 好记性不如烂笔头。 问题&#xff1a; 现在有一个数字与字母的映射表&#xff0c;且有以下规则&#xff1a; 映射表&#xff1a; 数字 字母 3 A 7 B 9 C 规则&#xff1a; 1.碰到当前数字时&#xff0c;使用字母替换&#xff0c;例如&#xff0c;3-> A 2.碰到当前数…...

Jmeter教程-JMeter 环境安装及配置

Jmeter教程 JMeter 环境安装及配置 在使用 JMeter 之前&#xff0c;需要配置相应的环境&#xff0c;包括安装 JDK 和获取 JMeter ZIP 包。 安装JDK 1.JDK下载 示例环境为Windows11环境&#xff0c;读者应根据实际环境下载JDK的安装包。 JDK下载地址&#xff1a; Java21 下载 …...

十大基础排序算法

排序算法分类 排序&#xff1a;将一组对象按照某种逻辑顺序重新排列的过程。 按照待排序数据的规模分为&#xff1a; 内部排序&#xff1a;数据量不大&#xff0c;全部存在内存中&#xff1b;外部排序&#xff1a;数据量很大&#xff0c;无法一次性全部存在内存中&#xff0c;…...

IP协议及相关技术协议

一、IP基本认识 1. IP的作用 IP在TCP/IP模型中处于网络层&#xff0c;网络层的主要作用是实现主机与主机之间的通信&#xff0c;而IP的作用是在复杂的网络环境中将数据包发送给最终目的主机。 2. IP与MAC的关系 简单而言&#xff0c;MAC的作用是实现“直连”的两个设备之通信…...

小红书x-s算法及补环境 单旋转验证码

前言 大家好呀!新的一年,先祝大家新年快乐咯.祝大家逆向,风控都一把过咯. 新年第一篇文章,后续会持续更新哦! 春晚见证了中国经济的新风口,今年春晚互联网企业赞助商就两家,小红书和京东.小红书类似国外的ins,有预感未来小红书会大火,所以写了这篇文章,有需要的加我,联系方式…...

代码检测规范和git提交规范

摘要&#xff1a;之前开发的项目&#xff0c;代码检测和提交规范都是已经配置好的&#xff0c;最近自己新建的项目就记录下相关配置过程。 1. ESlint配置 2013年6月创建开源项目&#xff0c;提供一个插件化的JavaScript代码检测工具&#xff0c;创建项目是生成的eslintrc.js文…...

Elasticsearch:什么是搜索引擎?

搜索引擎定义 搜索引擎是一种软件程序或系统&#xff0c;旨在帮助用户查找存储在互联网或特定数据库中的信息。 搜索引擎的工作原理是对各种来源的内容进行索引和编目&#xff0c;然后根据用户的搜索查询向用户提供相关结果列表。 搜索引擎对于希望快速有效地查找特定信息的用…...

人工智能几个关键节点:深蓝,AlphaGo,ChatGPT,Sora

近30年&#xff0c;人工智能几个关键节点&#xff1a;深蓝&#xff0c;AlphaGo&#xff0c;ChatGPT&#xff0c;Sora 深蓝&#xff1a; 1997年&#xff0c;深蓝击败卡斯帕罗夫的比赛是通过一系列复杂的算法和策略实现的。深蓝的开发团队使用了一种名为“暴力搜索”的技术&…...

WordPres Bricks Builder 前台RCE漏洞复现(CVE-2024-25600)

0x01 产品简介 Bricks Builder是一款用于WordPress的开发主题,提供直观的拖放界面,用于设计和构建WordPress网站。它使用户能够轻松创建自定义的网页布局和设计,无需编写或了解复杂的代码。Bricks Builder具有用户友好的界面和强大的功能,使用户可以通过简单的拖放操作添加…...

代码随想录算法训练营总结 | 慢慢总结,想起啥就先写上

二叉树总结 二叉树的结构 stauct TreeNode {int val&#xff1b;TreeNode* left;TreeNode* right; }二叉树的递归函数分析 二叉树的递归函数当做只有一个根节点&#xff0c;一个左子树&#xff0c;一个右节点的数去看&#xff0c;这看着是个废话&#xff0c; 其实很重要 回溯…...

基于开源模型对文本和音频进行情感分析

应用场景 从商品详情页爬取商品评论&#xff0c;对其做舆情分析&#xff1b;电话客服&#xff0c;对音频进行分析&#xff0c;做舆情分析&#xff1b; 通过开发相应的服务接口&#xff0c;进一步工程化&#xff1b; 模型选用 文本&#xff0c;选用了通义实验室fine-tune的st…...

SQL中为什么不要使用1=1

最近看几个老项目的SQL条件中使用了11&#xff0c;想想自己也曾经这样写过&#xff0c;略有感触&#xff0c;特别拿出来说道说道。 编写SQL语句就像炒菜&#xff0c;每一种调料的使用都可能会影响菜品的最终味道&#xff0c;每一个SQL条件的加入也可能会影响查询的执行效率。那…...

python 几种常见的音频数据读取、保存方式

1. soundfile 库的使用 soundfile库是一个Python库&#xff0c;主要用于读取和写入音频文件。它支持多种音频格式&#xff0c;包括WAV、AIFF、FLAC和OGG等。通过soundfile库&#xff0c;用户可以方便地将numpy数组存储到音频文件或者将音频文件加载到numpy数组中。此外&#x…...

关于msvcr120.dll丢失怎样修复的详细解决步骤方法分享,msvcr120.dll文件的相关内容

在电脑使用过程中&#xff0c;我们经常遇到各种系统错误&#xff0c;其中msvcr120.dll丢失是一个常见问题。msvcr120.dll文件是Visual C Redistributable for Visual Studio 2015/2017的一个组件&#xff0c;主要用于支持某些应用程序的正常运行。当电脑出现msvcr120.dll丢失情…...

简单几步通过DD工具把云服务器系统Linux改为windows

简单几部通过DD安装其他系统&#xff0c;当服务器的web控制台没有我们要装的系统&#xff0c;就需要通过DD&#xff08;Linux磁盘&#xff09;工具来更改系统&#xff0c;&#xff08;已知支持KVM系统&#xff09; 本文如何简单的更换系统&#xff0c;不通过web控制台来更换&a…...

使用 package.json 配置代理解决 React 项目中的跨域请求问题

使用 package.json 配置代理解决 React 项目中的跨域请求问题 当我们在开发前端应用时&#xff0c;经常会遇到跨域请求的问题。为了解决这个问题&#xff0c;我们可以通过配置代理来实现在开发环境中向后端服务器发送请求。 在 React 项目中&#xff0c;我们可以使用 package…...

生成 Let‘s Encrypt 免费证书

文章目录 1. 安装 acme.sh2. 添加云服务商安全访问密钥并授权管理DNS记录3. 当前 Shell 添加安全访问密钥变量4. 生成证书5. 拷贝证书6. 清理安全访问密钥变量7. 打开脚本自动更新 代码仓库地址&#xff1a;https://github.com/Neilpang/acme.sh 1. 安装 acme.sh yum -y insta…...