【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不能導致內存泄露。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/697542.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/697542.shtml
英文地址,請注明出處:http://en.pswp.cn/news/697542.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

最全整理,軟件測試-Web頁面測試思路總結,13年經驗...

目錄&#xff1a;導讀 前言一、Python編程入門到精通二、接口自動化項目實戰三、Web自動化項目實戰四、App自動化項目實戰五、一線大廠簡歷六、測試開發DevOps體系七、常用自動化測試工具八、JMeter性能測試九、總結&#xff08;尾部小驚喜&#xff09; 前言 1、Web功能測試 …

Vim 模式切換 | 命令集

Vim 模式切換 | 命令集 vim 主要模式及切換一、正常/普通/命令模式1 光標相關操作命令集1.1 光標移動1.2 文字刪除1.3 粘貼和復制1.4 替換1.5 字符更改 二、插入模式2.1 插入模式和命令行模式相互切換 三、末行模式2.1 末行模式和命令行模式相互切換2.2 末行模式相關命令集 vim…

【EI會議征稿通知】第十屆機械工程、材料和自動化技術國際會議(MMEAT 2024)

2024年第十屆機械工程、材料和自動化技術國際會議(MMEAT 2024) 2024 10th International Conference on Mechanical Engineering,Materials and Automation Technology 2024年第十屆機械工程、材料和自動化技術國際會議( MMEAT 2024) 將于2024年06月21-23日在中國武漢舉行。MM…

【LeetCode每日一題】單調棧316去除重復字母

題目&#xff1a;去除重復字母 給你一個字符串 s &#xff0c;請你去除字符串中重復的字母&#xff0c;使得每個字母只出現一次。需保證 返回結果的字典序最小&#xff08;要求不能打亂其他字符的相對位置&#xff09;。 示例 1&#xff1a; 輸入&#xff1a;s “bcabc” 輸…

docker自定義網絡實現容器之間的通信

Background docker原理 docker是一個Client-Server結構的系統&#xff0c;Docker的守護進程運行在主機上。通過Socket從客戶端訪問。docker核心三大組件&#xff1a;image–鏡像、container-容器、 repository-倉庫。docker使用的cpu、內存以及系統內核等資源都是直接使用宿主…

python 函數-04-參數收集-帶1個或2個星號

一個函數&#xff0c;至多可以帶一個一星參數&#xff08;收集位置參數&#xff09;&#xff0c;加上一個二星參數&#xff08;收集關鍵字參數&#xff09;。 01 一個星號參數 入參為不定參數&#xff08;參數個數不確定&#xff09;&#xff0c;此時在定義參數時&#xff0c…

最簡單方式把jar打包成Windows服務

廢話 &#x1f622; 將JAR文件轉化為Windows服務是一種高效且常見的Java應用部署策略。這種轉變賦予了Java應用程序在Windows操作系統上以無界面后臺服務模式運行的能力&#xff0c;從而實現了持續、穩定且可靠的功能提供。這種部署方式不僅提升了應用的可用性&#xff0c…

Python學習筆記——類(編程風格)

編寫的應用比較復雜時&#xff0c;特別是大型項目&#xff0c;團隊分工協同&#xff0c;尤其要注意編程風格。 &#xff08;1&#xff09;類名應采用駝峰命名法&#xff0c;即將類名中的每個單詞的首字母都大寫&#xff08;類名的首字母是大寫的&#xff09;&#xff0c;并且不…

導入excel某些數值是0

目錄 導入excel某些數值是0數據全部都是0原因解決 部分數據是0原因解決 導入excel某些數值是0 數據全部都是0 有一列“工單本月入庫重量”全部的數據都是0 原因 展示的時候&#xff0c;展示的字段和內表需要展示的字段不一致&#xff0c;導致顯示的是0。 解決 修改展示的字…

kubernetes面試題及核心知識點

無狀態負載deployment有狀態管理 &#xff1a; config配置文件 secret密碼文件 內置volumn插件 1、emptyDir宿主機的存儲為容器分配資源。臨時儲存&#xff0c;隨著pod的刪除而消失&#xff0c; 2、hostPath宿主機的存儲為容器分配資源。不會隨著pod的刪除而消失&#xf…

Video generation models as world simulators-視頻生成模型作為世界模擬器

原文地址&#xff1a;Video generation models as world simulators 我們探索在視頻數據上進行大規模生成模型的訓練。具體來說&#xff0c;我們聯合訓練文本條件擴散模型&#xff0c;同時處理不同持續時間、分辨率和長寬比的視頻和圖像。我們利用一個在視頻和圖像潛在編碼的時…

AGI|AI到底如何生成視頻?Sora究竟為何能引爆科技圈?

目錄 一、AI生成視頻引發新浪潮 二、生成方法及難點 三、Sora的突破進展 &#xff08;一&#xff09;可生成不同尺寸視頻 &#xff08;二&#xff09;可生成1分鐘時長視頻 &#xff08;三&#xff09;圖片生成視頻 &#xff08;四&#xff09;場景一致性 &#xff08;五…

Window部署Exceptionless

Exceptionless Elasticsearch 版本&#xff1a; Exceptionless&#xff1a;8.1.0 Elasticsearch&#xff1a;7.17.5 JDK&#xff1a;11.0.10 目錄 一、Elasticsearch運行 二、 Exceptionless 一、Elasticsearch運行 bin目錄下elasticsearch.bat 直接運行 訪問 http://lo…

使用gstreamer和opencv實時識別LED數碼管數字的測試demo(QT)

效果演示: 效果1:靜態識別 效果2:動態實時識別 可以看到,雖然不太穩定,但是好歹還是識別出來了的,就是需要調參,然鵝我不是專業的,目前還沒有調好。。。 T_T 先這樣吧。以后再說。 覺得文章質量可以的,請點個贊哦,謝謝。 前言 最近需要完成使用op…

yum方式快速安裝mysql

問題描述 使用yum的方式簡單安裝了一下mysql&#xff0c;對過程進行簡單記錄。 步驟 ①安裝wget和vim sudo yum -y install wget vim②下載mysql的rpm包 sudo wget https://dev.mysql.com/get/mysql80-community-release-el7-3.noarch.rpm③升級和更新rpm包 sudo rpm -Uv…

ElementUI組件的安裝和使用

Element UI 是一款基于 Vue 2.0 的桌面端組件庫&#xff0c;主要用于快速構建網站的前端部分。它提供了豐富的組件&#xff0c;如按鈕、輸入框、表格、標簽頁等&#xff0c;以及一些布局元素&#xff0c;如布局容器、分割線等。Element UI 的設計風格簡潔&#xff0c;易于上手&…

【前端素材】推薦優質后臺管理系統Airmin平臺模板(附源碼)

一、需求分析 系統定義 后臺管理系統是一種用于管理和監控網站、應用程序或系統的在線工具。它通常是通過網頁界面進行訪問和操作&#xff0c;用于管理網站內容、用戶權限、數據分析等。后臺管理系統是網站或應用程序的控制中心&#xff0c;管理員可以通過后臺系統進行各種管…

第四十二回 假李逵翦徑劫單身 黑旋風沂嶺殺四虎-python讀寫csv和json數據

李逵答應了宋江三件事&#xff1a;不可吃酒&#xff0c;獨自前行&#xff0c;不帶板斧。李逵痛快答應了&#xff0c;挎一口腰刀&#xff0c;提著樸刀&#xff0c;帶了一錠大銀子&#xff0c;三五個小銀子就下山去了。 宋江放心不下&#xff0c;于是請同鄉朱貴也回家一趟&#…

arcgisPro制圖輸出

1、設置地圖底圖 2、導入數據 3、 設置圖形顏色&#xff0c;如下&#xff1a;右鍵“浙江省”數據層&#xff0c;選擇符號系統 4、在右側可看到打開的符號系統欄&#xff0c;進行如下設置: 5、移除“其他所有值”項&#xff0c;如下&#xff1a; 6、設置圖形輪廓&#xff0c;如下…

【MATLAB】CEEMD_ MFE_SVM_LSTM 神經網絡時序預測算法

有意向獲取代碼&#xff0c;請轉文末觀看代碼獲取方式~也可轉原文鏈接獲取~ 1 基本定義 CEEMD_MFE_SVM_LSTM神經網絡時序預測算法是一種結合了多種先進技術的復雜預測方法&#xff0c;旨在提高時序預測的準確性和穩定性。下面是對該算法的詳細介紹&#xff1a; CEEMD&#xff…