色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
电子发烧友
开通电子发烧友VIP会员 尊享10大特权
海量资料免费下载
精品直播免费看
优质内容免费畅学
课程9折专享价
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

【RT-Thread學習筆記】用memwatch排除內存泄露

嵌入式物聯網開發 ? 來源:嵌入式物聯網開發 ? 作者:嵌入式物聯網開發 ? 2022-07-30 14:01 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

? 本文將給大家介紹,如何使用一個小的開源組件【memwatch】排查有可能出現【內存泄漏】的代碼。

先上一段測試代碼,里面是包括一些內存操作錯誤的代碼:

//main.c

#include 
#include 
#include 
#include 

#include "memwatch.h" //包含memwatch提供的頭文件

static void signal_handler(int sign_no)
{
    printf("Capture signal no: %d\n", sign_no); 
	
	exit(-1);
}

int memory_leak_test(void)
{
	char *p, *p1, *p2=NULL;
	
	p = malloc(100); //申請空間
	if (p) {
		strcpy(p, "123456");
	}
	
	p1 = malloc(5); //申請空間
	if (p1) {
		strcpy(p1, "123456");
	}
	
	//free(p); //使用完故意不釋放
	//free(p1); //使用完故意不釋放
	
	*p2 = '5'; //訪問空指針,導致segment default (core dump),memwatch并不能堅持出來
	
	return 0;
}

int main(int arc, const char *argv[])
{
	signal(SIGSEGV, signal_handler); 
	
	printf("This is a sample for memwatch to detect memory leak !!!\n");
	
	memory_leak_test();
	
	return 0;
}
poYBAGDYdXCAWkKMAAAAK8RNs4s030.png

然后將memwatch的源碼memwatch.c和memwatch.h放到main.c的目錄下,一同參與編譯,如下圖:

通過makefile或其他編譯方式,將上述文件編譯成可執行文件,再運行,觀察運行結果,如下:

從圖中我們可以知道,memwatch檢測出了main.c中內存操作錯誤的地方。另外,除運行輸出錯誤信息外,還會生成一個memwatch.log文件,從中可以詳細地知道內存錯誤的類型和具體位置。如下圖:

//memwatch.log

============= MEMWATCH 2.71 Copyright (C) 1992-1999 Johan Lindh =============

Started at Thu Mar  7 09:05:35 2019

Modes: __STDC__ 64-bit mwDWORD==(unsigned int)
mwROUNDALLOC==8 sizeof(mwData)==56 mwDataSize==56


Stopped at Thu Mar  7 09:05:35 2019

unfreed: <2> src/main.c(25), 5 bytes at 0xe667e0 [overflowed]  	{31 32 33 34 35 .. .. .. .. .. .. .. .. .. .. .. 12345}
unfreed: <1> src/main.c(20), 100 bytes at 0xe66720  	{31 32 33 34 35 36 00 FE FE FE FE FE FE FE FE FE 123456..........}

Memory usage statistics (global):
 N)umber of allocations made: 2
 L)argest memory usage      : 105
 T)otal of all alloc() calls: 105
 U)nfreed bytes totals      : 105
poYBAGDYdXCAWkKMAAAAK8RNs4s030.png

這樣我們就可以很清晰地根據反饋問題點修改對應的內存操作bug了,是不是很方便實用呢?

當然,這個范例僅僅是做了比較簡單的示范,在實際項目工程中,可能會遇到更多更隱蔽的內存操作問題,靈活運用memwatch排查內存問題,定會事半功倍。

最后附上,整個測試工程的文件,包括源碼和makefile,以供參考,如有發現問題,可在留言區評論,我會及時跟進回復。謝謝。

demo工程下載鏈接:memwatch_for_memory_leak_detect.tar.gz

?審核編輯:湯梓紅

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 內存
    +關注

    關注

    8

    文章

    3127

    瀏覽量

    75322
  • 代碼
    +關注

    關注

    30

    文章

    4902

    瀏覽量

    70865
  • RT-Thread
    +關注

    關注

    32

    文章

    1415

    瀏覽量

    42061
收藏 0人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

  • szullc1

評論

相關推薦
熱點推薦

RT-Thread學習筆記】使用scons命令生成靜態庫

RT-Thread學習筆記】如何使用scons 命令中buildlib的生成靜態庫?
的頭像 發表于 07-27 09:13 ?7167次閱讀
【<b class='flag-5'>RT-Thread</b><b class='flag-5'>學習</b><b class='flag-5'>筆記</b>】使用scons命令生成靜態庫

RT-Thread學習筆記】RISC-V匯編基礎三大塊知識

RT-Thread學習筆記】RISC-V匯編基礎的三大塊知識
的頭像 發表于 07-30 11:01 ?3263次閱讀
【<b class='flag-5'>RT-Thread</b><b class='flag-5'>學習</b><b class='flag-5'>筆記</b>】RISC-V匯編基礎三大塊知識

RT-Thread Nano入門學習筆記

RT-Thread Nano入門學習筆記
發表于 11-26 12:36 ?20次下載
<b class='flag-5'>RT-Thread</b> Nano入門<b class='flag-5'>學習</b><b class='flag-5'>筆記</b>

RT-Thread 應用筆記 - RTC Alarm 組件的使用

RT-Thread 應用筆記 - 不正確使用LOG也會引發hard faultRT-Thread 應用筆記 - RTC Alarm 組件的使用RT-
發表于 01-25 18:18 ?10次下載
<b class='flag-5'>RT-Thread</b> 應用<b class='flag-5'>筆記</b> - RTC Alarm 組件的使用

RT-Thread 內核學習筆記 - 理解defunct僵尸線程

RT-Thread 內核學習筆記 - 內核對象rt_objectRT-Thread 內核學習筆記
發表于 01-25 18:19 ?9次下載
<b class='flag-5'>RT-Thread</b> 內核<b class='flag-5'>學習</b><b class='flag-5'>筆記</b> - 理解defunct僵尸線程

RT-Thread 內核學習筆記 - 設備模型rt_device的理解

RT-Thread 內核學習筆記 - 內核對象rt_objectRT-Thread 內核學習筆記
發表于 01-25 18:19 ?8次下載
<b class='flag-5'>RT-Thread</b> 內核<b class='flag-5'>學習</b><b class='flag-5'>筆記</b> - 設備模型<b class='flag-5'>rt</b>_device的理解

RT-Thread 內核學習筆記 - 內核對象鏈表結構深入理解

RT-Thread 內核學習筆記 - 內核對象rt_objectRT-Thread 內核學習筆記
發表于 01-25 18:23 ?6次下載
<b class='flag-5'>RT-Thread</b> 內核<b class='flag-5'>學習</b><b class='flag-5'>筆記</b> - 內核對象鏈表結構深入理解

RT-Thread 內核學習筆記 - 內核對象初始化鏈表組織方式

RT-Thread 內核學習筆記 - 內核對象rt_objectRT-Thread 內核學習筆記
發表于 01-25 18:24 ?3次下載
<b class='flag-5'>RT-Thread</b> 內核<b class='flag-5'>學習</b><b class='flag-5'>筆記</b> - 內核對象初始化鏈表組織方式

RT-Thread 內核學習筆記 - 內核對象操作API

RT-Thread 內核學習筆記 - 內核對象rt_objectRT-Thread 內核學習筆記
發表于 01-25 18:26 ?7次下載
<b class='flag-5'>RT-Thread</b> 內核<b class='flag-5'>學習</b><b class='flag-5'>筆記</b> - 內核對象操作API

RT-Thread學習筆記 RT-Thread的架構概述

RT-Thread 簡介 作為一名 RTOS 的初學者,也許你對 RT-Thread 還比較陌生。然而,隨著你的深入接觸,你會逐漸發現 RT-Thread 的魅力和它相較于其他同類型 RTOS
的頭像 發表于 07-09 11:27 ?5053次閱讀
<b class='flag-5'>RT-Thread</b><b class='flag-5'>學習</b><b class='flag-5'>筆記</b> <b class='flag-5'>RT-Thread</b>的架構概述

RT-Thread學習筆記】Makefile的FORCE

RT-Thread學習筆記】十分鐘學會Makefile的FORCE
的頭像 發表于 07-30 13:55 ?3179次閱讀
【<b class='flag-5'>RT-Thread</b><b class='flag-5'>學習</b><b class='flag-5'>筆記</b>】Makefile的FORCE

RT-Thread學習筆記】如何抓取終端的網絡報文

RT-Thread學習筆記】如何抓取終端的網絡報文?
的頭像 發表于 07-30 13:57 ?3473次閱讀
【<b class='flag-5'>RT-Thread</b><b class='flag-5'>學習</b><b class='flag-5'>筆記</b>】如何抓取終端的網絡報文

RT-Thread學習筆記】GCC鏈接報錯的排除過程分享

RT-Thread學習筆記】GCC鏈接報錯的排除過程分享,一個意想不到的問題。
的頭像 發表于 07-30 15:08 ?1412次閱讀
【<b class='flag-5'>RT-Thread</b><b class='flag-5'>學習</b><b class='flag-5'>筆記</b>】GCC鏈接報錯的<b class='flag-5'>排除</b>過程分享

RT-Thread文檔_內存管理

RT-Thread文檔_內存管理
發表于 02-22 18:30 ?0次下載
<b class='flag-5'>RT-Thread</b>文檔_<b class='flag-5'>內存</b>管理

基于RT-Thread Studio學習

前期準備:從官網下載 RT-Thread Studio,弄個賬號登陸,開啟rt-thread學習之旅。
的頭像 發表于 05-15 11:00 ?5294次閱讀
基于<b class='flag-5'>RT-Thread</b> Studio<b class='flag-5'>學習</b>
主站蜘蛛池模板: 国产精品免费一区二区区 | 久久精品动漫99精品动漫 | 拔擦拔擦8X永久华人免费播放器 | 久久精品一卡二卡三卡四卡视频版 | 国产在线精品亚洲一品区 | 色噜噜噜噜亚洲第一 | 97人人看碰人免费公开视频 | 亚洲狠狠网站色噜噜 | 一边亲着一面膜下的免费过程 | 亚洲精品无码一区二区三区四虎 | 伊人久久大香线蕉综合影 | 神马老子影院午夜伦 | 国产精品久久久亚洲偷窥女厕 | 亚洲AV无码一区二区色情蜜芽 | 亚洲免费观看 | 国产成人免费观看在线视频 | 美女视频黄a视频全免费网站色窝 | 性啪啪chinese东北女人 | 在线日韩欧美一区二区三区 | 在线播放免费人成视频 | 0855福利| 超碰视频在线观看 | 麻豆成人久久精品二区三区网站 | 亚洲中字幕永久在线观看 | 男插女高潮一区二区 | 抽插H浊水H嫩B父皇 虫族bl文全肉高h | 最新国产在线视频 | 国产乱码精品一区二区三区四川 | 永久久久免费人妻精品 | 久久亚洲精选 | AV亚洲精品少妇毛片无码 | 精品三级在线观看 | 亚洲精品入口一区二区乱麻豆精品 | 北原夏美 快播 | 亚洲欧洲日产国码久在线 | 亚洲乱亚洲乱妇在线观看 | 国产人妻人伦精品无码.麻豆 | 99免费在线观看 | 日本视频一区二区免费观看 | 久久精品天天中文字幕 | 久久国产精品萌白酱免费 |

電子發燒友

中國電子工程師最喜歡的網站

  • 2931785位工程師會員交流學習
  • 獲取您個性化的科技前沿技術信息
  • 參加活動獲取豐厚的禮品