基于stm32f103zet6的內(nèi)存管理的學(xué)習(xí)
今天在對(duì)原子的代碼稍作修改是可以進(jìn)行內(nèi)存分配和回收的,所以開始深入分析一下這個(gè)代碼的實(shí)現(xiàn)過程。一、所謂的內(nèi)存管理內(nèi)存管理,是指軟件運(yùn)行時(shí)對(duì)計(jì)算機(jī)內(nèi)存資源的分配和使用的技術(shù)。其最主要的目的是如何高效,快速的分配,并且在適當(dāng)?shù)臅r(shí)候釋放和回收內(nèi)存資源。
本文引用地址:http://m.butianyuan.cn/article/201612/324495.htm二、代碼分析
1、首先了解一下一個(gè)數(shù)據(jù)結(jié)構(gòu),這是一個(gè)聲明
/*************************** 內(nèi)存管理控制 **********************************************/ typedef struct {void (*init)(u8);//初始化u8 (*perused)(u8); //內(nèi)存使用率u8 *membase[2];//內(nèi)存池 管理2個(gè)區(qū)域的內(nèi)存u16 *memmap[2]; //內(nèi)存管理狀態(tài)表u8 memrdy[2]; //內(nèi)存管理是否就緒}_m_mallco_dev;
成員包括兩個(gè)函數(shù)指針(該指針指向函數(shù)),兩個(gè)指針數(shù)組和一個(gè)u8類型的數(shù)組,具體分析下這幾個(gè)成員的含義,那么首先要找到這個(gè)
_m_mallco_dev mallco_dev={mem_init,//內(nèi)存初始化mem_perused,//內(nèi)存使用率mem1base,mem2base,//內(nèi)存池 mem1mapbase,mem2mapbase,//內(nèi)存管理狀態(tài)表0,0, //內(nèi)存管理未就緒};這才是真正定義的地方,現(xiàn)在就可以了解這個(gè)幾個(gè)成員的具體功能了。
a、初始化中 mem_init,mem_perused,這是兩個(gè)函數(shù),為什么可以這樣用呢(直接用函數(shù)名)?
名 稱: mem_perused
* 功 能: 獲取內(nèi)存使用率
* 參 數(shù): *memx:所屬內(nèi)存塊
* 返 回 值: 使用率(0~100)**************************************************************************************
/u8 mem_perused(u8 memx)
{ u32 used=0; u32 i;
for(i=0;i
} return (used*100)/(memtblsize[memx]);
} 這里可以看到出現(xiàn)一個(gè)這樣的表達(dá)式,需要仔細(xì)分析!mallco_dev.memmap[memx][i]
相關(guān)推薦
技術(shù)專區(qū)
- FPGA
- DSP
- MCU
- 示波器
- 步進(jìn)電機(jī)
- Zigbee
- LabVIEW
- Arduino
- RFID
- NFC
- STM32
- Protel
- GPS
- MSP430
- Multisim
- 濾波器
- CAN總線
- 開關(guān)電源
- 單片機(jī)
- PCB
- USB
- ARM
- CPLD
- 連接器
- MEMS
- CMOS
- MIPS
- EMC
- EDA
- ROM
- 陀螺儀
- VHDL
- 比較器
- Verilog
- 穩(wěn)壓電源
- RAM
- AVR
- 傳感器
- 可控硅
- IGBT
- 嵌入式開發(fā)
- 逆變器
- Quartus
- RS-232
- Cyclone
- 電位器
- 電機(jī)控制
- 藍(lán)牙
- PLC
- PWM
- 汽車電子
- 轉(zhuǎn)換器
- 電源管理
- 信號(hào)放大器
評(píng)論