51单片机内存动态分配

2023-04-07 15:08:31

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字节空间

结束

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

  • 作者:未寻得的旧梦
  • 原文链接:https://blog.csdn.net/weixin_45518253/article/details/109622464
    更新时间:2023-04-07 15:08:31