51单片机内存动态分配
序言
最近玩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字节空间
结束
到此,本文结束。
这是我的第一篇博客,大学一年已过,学了挺多,又感觉学无所成,愿往后…