esp32之記憶體洩漏檢測機制

2021-09-26 09:27:21 字數 902 閱讀 4804

在freertos嵌入式實時系統上開發,經常需要對記憶體進行優化,或者因使用不當造成記憶體洩漏(最難受的莫過於某個庫出現記憶體洩漏),人為記憶體洩漏比較容易找出來,但是函式庫存在記憶體洩漏卻是很難發現,作者在解決記憶體洩漏的過程中也遇到不少坑,難以定位問題存在。

試想有一種方法可以在**開發階段實時除錯記憶體,以避免**量龐大後再出現記憶體洩漏問題,於是寫了乙個簡單的記憶體洩漏實時監測任務,用於開發者開發階段記憶體除錯,同時可用於任務堆疊分配的優化。

具體**如下:

/** memory_check.c

**  created on: 2023年3月3日

*      author: zifeng

*/#include

#include "freertos/freertos.h"

#include "freertos/task.h"

#include "esp_system.h"

#include "esp_spi_flash.h"

#include "esp_log.h"

#include "memory_check.h"

/*** memory_check_tag   指標變數存放在全域性靜態區

* memory_check_tag   指標變數指向的值不能改變

* "memory_check"     字串常量存放文字常量區

*/static const char *memory_check_tag = "memory_check";

void memory_check_task(void *pvparameter)

vtaskdelete(null);

}void thread_check_func(const char *thread_name, int thread_line)

最終效果:

ESP32 記憶體洩漏Debug方法

esp32 是espressif設計的,在物聯網應用中非常流行的 wi fi bluetooth ble 雙模晶元,其開源idf的方式也在開發者社群 github 具有重要的影響力。對於程式設計而言,也相當友好。而記憶體洩漏作為乙個非常常見的問題被相當多的朋友遇到,它關乎 邏輯是否正確 以及最重要的...

記憶體洩漏檢測

一 記憶體洩漏 記憶體洩漏是程式設計中常常見到的乙個問題.記憶體洩漏往往會一種奇怪的方式來表現出來,基本上每個程式都表現出不同的方式.但是一般 最後的結果只有兩個,乙個是程式當掉.乙個是系統記憶體不足.還有一種就是比較介於中間的結果程式不會當,但是系統的反映時間明顯降低,需要定時的 reboot才會...

記憶體洩漏檢測

一 記憶體洩漏 記憶體洩漏是程式設計中常常見到的乙個問題.記憶體洩漏往往會一種奇怪的方式來表現出來,基本上每個程式都表現出不同的方式.但是一般最後的結果只有兩個,乙個是程式當掉.乙個是系統記憶體不足.還有一種就是比較介於中間的結果程式不會當,但是系統的反映時間明顯降低,需要定時的reboot才會正常...