0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

你知道吗? 51单片机也有动态内存分配

朱老师物联网大讲堂 2024-04-26 08:10 次阅读

一、简述

其实在51单片机中也可以使用动态内存,动态内存其实就是划出一块内存区域,将这块内存进行管理,称为内存管理。51单片机可以使用c语言自带的标准内存管理API:malloc、calloc、realloc、free。他们的头文件在中,所以使用内存管理必须包含该头文件。

二、使用方法

51单片机需要使用内存管理API必须要手动调用初始化堆内存管理函数:init_mempool

ARM32单片机在MDK5开发环境中,由“__main”函数进行堆内存管理初始化,__main函数执行完之后才会执行main函数(这里不细讲),所以开发32单片机可直接使用内存管理API进行内存申请和释放。

init_mempool函数说明在keil安装目录下的“C51\Hlp\c51.chm”,在索引“Library Reference/Library Files/Source Code”下,如下图:

68f0680c-0361-11ef-9118-92fbcf53809c.png

  • 函数原型讲解
  • p:表示用来做动态内存区域的首地址
  • size:表示动态内存区域的大小,单位byte

6913784c-0361-11ef-9118-92fbcf53809c.png

  • 函数使用
  • 建议51单片机动态内存区域的范围使用xdata区域,因为片内RAM只有256字节可用,所以chm手册给的示例代码也是使用的xdata区域。
  • init_mempool函数建议在main函数开始进行初始化。

692746d8-0361-11ef-9118-92fbcf53809c.png

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • API
    API
    +关注

    关注

    2

    文章

    1434

    浏览量

    61230
  • 51单片机
    +关注

    关注

    270

    文章

    5681

    浏览量

    121370
  • 动态内存
    +关注

    关注

    1

    文章

    24

    浏览量

    7942
收藏 人收藏

    评论

    相关推荐

    动态内存管理模块的设计原理与实现

    Fense 通过设立一个双向链表(struct Head *stHead)来保存所有被分配动态内存块的信息。链表中的每个节点对应一个动态内存块,节点中包括此内存大小、
    的头像 发表于 06-30 08:05 2192次阅读
    <b class='flag-5'>动态内存</b>管理模块的设计原理与实现

    C语言知识总结:动态内存分配

    动态内存分配就 是指在程序执行的过程中动态分配或者回收存储空间的分配内存的方法。
    发表于 10-24 15:52 683次阅读

    C语言程序设计中动态内存分配如何实现

    C语言程序设计中,动态内存分配如何实现,需要注意哪些问题?
    发表于 09-28 16:53 1003次阅读

    内存动态内存分配实现

    第27章 STM32H7的TCM,SRAM等五块内存动态内存分配实现本章教程为大家分享一种DTCM,SRAM1,SRAM2,SRAM3和SRAM4可以独立管理的动态内存管理方案,在实
    发表于 08-03 07:14

    如何在单片机上也可正常使用动态内存分配

    51单片机内存动态分配序言最近玩51单片机碰到一个问题,51中malloc函数并不能像在PC上一
    发表于 11-19 07:36

    嵌入式C语言动态内存分配

    动态内存分配:1、malloc、memset、free在日常写代码时需要注意以下几点:malloc分配内存时,需要 if语句 判断malloc是否成功
    发表于 12-14 06:37

    请问使用动态内存分配安全吗?

    想在C语言程序员之间开始一个激烈的,或者说有争议的讨论很简单,只需要问:“使用动态内存分配安全吗?”使用动态内存分配安全吗?在C语言程序开发中,动态
    发表于 12-15 06:10

    使用动态内存分配安全吗

    [导读]想在C语言程序员之间开始一个激烈的,或者说有争议的讨论很简单,只需要问:“使用动态内存分配安全吗?”想在C语言程序员之间开始一个激烈的,或者说有争议的讨论很简单,只需要问:“使用动态内存
    发表于 12-15 07:44

    动态内存分配是什么意思

    所谓动态内存分配(Dynamic Memory Allocation)就是指在程序执行的过程中动态分配或者回收存储空间的分配
    发表于 12-17 08:17

    RTThread的动态内存空间该如何去分配

    关于rtt的动态内存空间分配,想问一下以下我的几点理解是对的吗1、我看RTT NANO和MASTER版本的动态内存分配好像不太一样,我的理解是MASTER版本的
    发表于 08-31 14:34

    51单片机能实现动态内存管理吗?

    怎么用51单片机实现动态内存管理
    发表于 10-15 12:43

    单片机系统进行动态内存分配和任务调度思想的资料和代码实例说明

    内存分配设计思想:我们设置动态内存分配的初衷在于:有些单片机系统内存资源比较少,便显得特别珍贵,
    发表于 09-30 17:13 4次下载
    <b class='flag-5'>单片机</b>系统进行<b class='flag-5'>动态内存</b><b class='flag-5'>分配</b>和任务调度思想的资料和代码实例说明

    51单片机如何使用动态内存

    本文档的主要内容详细介绍的是51单片机如何使用动态内存的详细资料免费下载。
    发表于 06-14 17:44 0次下载
    <b class='flag-5'>51</b><b class='flag-5'>单片机</b>如何使用<b class='flag-5'>动态内存</b>

    静、动态内存的优劣比较

    动态内存分配不像数组等静态内存分配方法那样需要预先分配存储空间,而是由系统根据程序的需要即时分配
    的头像 发表于 08-06 18:25 6300次阅读

    51单片机内存动态分配

    51单片机内存动态分配序言最近玩51单片机碰到一个问题,51中malloc函数并不能像在PC上一
    发表于 11-12 14:36 11次下载
    <b class='flag-5'>51</b><b class='flag-5'>单片机内存</b><b class='flag-5'>动态分配</b>