51微控制器記憶體動態分配

2021-10-10 10:55:37 字數 780 閱讀 5131

最近玩51微控制器碰到乙個問題,51中malloc函式並不能像在pc上一樣正常執行,這涉及到了記憶體池的概念。下面就來演示一下如何在微控制器上也可正常使用動態記憶體分配。

首先宣告乙個足夠大的陣列

char mempool[

512]

;//宣告乙個512位元組的陣列

初始化記憶體池

函式原型

void init_mempool (void _malloc_mem_ *p, unsigned int size)
第乙個引數是乙個指向陣列名的指標(二維指標)

第二個引數是記憶體池空間大小

init_mempool (

&mempool,

sizeof

(mempool));

//注意傳遞的是陣列名位址

init_mempool、malloc函式都是在標頭檔案stdlib.h

//記憶體分配,比如字串記憶體動態分配

char

*str;

str =

(char*)

malloc(50

*sizeof

(char))

;//給字串str分配 50位元組空間

到此,本文結束。

這是我的第一篇部落格,大學一年已過,學了挺多,又感覺學無所成,願往後…

51微控制器內部ram

51微控制器預設的內部ram只有128位元組,52微控制器增加至256位元組,stc89c54 55 58 516等增加到1280位元組。微控制器內部ram,共256個單元,使用者使用前128個單元,用於存放可讀寫資料,後128個單元被專用暫存器占用。現在新出的51微控制器都在內部擴充套件了外部ra...

51微控制器內部資源

運算器 功能 1 從儲存器中取出下一條要執行的指令 取指 2 對取出的指令進行解碼 解碼 3 指揮運算器運算或控制資料傳送 指揮 1 pc是乙個16位專用暫存器,由cpu控制提供下一條執行指令的首位址 2 程式執行時自動加1 按順序執行 3 復位時值為0000h,程式從0開始 4 可被指令修改功能實...

記憶體動態分配

陣列的元素儲存於記憶體中連續的位置上。當乙個陣列被宣告時,它所需要的內存在編譯時就被分配。但是,你也可以使用動態記憶體分配在執行時為它分配記憶體。malloc所分配的是一塊連續的記憶體。例如,如果請求它分配100個位元組的記憶體,那麼它實際分配的記憶體就是100個連續的位元組,並不會分開位於兩塊或多...