51单片机内存动态分配

51单片机内存动态分配

序言

最近玩51单片机碰到一个问题,51中malloc函数并不能像在PC上一样正常运行,这涉及到了内存池的概念。下面就来演示一下如何在单片机上也可正常使用动态内存分配。

初始化内存池

  1. 首先声明一个足够大的数组
    char mempool[512]; //声明一个512字节的数组
  1. 初始化内存池
    函数原型
    void init_mempool (void _MALLOC_MEM_ *p, unsigned int size) 
    第一个参数是一个指向数组名的指针(二维指针)

    第二个参数是内存池空间大小
    init_mempool (&mempool, sizeof(mempool)); //注意传递的是数组名地址  

内存分配

init_mempoolmalloc函数都是在头文件 stdlib.h

    //内存分配,比如字符串内存动态分配
    char *str;
    str = (char*)malloc(50 * sizeof(char)); //给字符串str分配 50字节空间

结束

到此,本文结束。
这是我的第一篇博客,大学一年已过,学了挺多,又感觉学无所成,愿往后…

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值