一、简述
其实在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”下,如下图:
- 函数原型讲解
- p:表示用来做动态内存区域的首地址
- size:表示动态内存区域的大小,单位byte
- 函数使用
- 建议51单片机动态内存区域的范围使用xdata区域,因为片内RAM只有256字节可用,所以chm手册给的示例代码也是使用的xdata区域。
- init_mempool函数建议在main函数开始进行初始化。
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。
举报投诉
-
API
+关注
关注
2文章
1489浏览量
61854 -
51单片机
+关注
关注
273文章
5700浏览量
123302 -
动态内存
+关注
关注
1文章
24浏览量
7973
发布评论请先 登录
相关推荐
动态内存管理模块的设计原理与实现
Fense 通过设立一个双向链表(struct Head *stHead)来保存所有被分配的动态内存块的信息。链表中的每个节点对应一个动态内存块,节点中包括此内存大小、
内存的动态内存分配实现
第27章 STM32H7的TCM,SRAM等五块内存的动态内存分配实现本章教程为大家分享一种DTCM,SRAM1,SRAM2,SRAM3和SRAM4可以独立管理的动态内存管理方案,在实
发表于 08-03 07:14
请问使用动态内存分配安全吗?
想在C语言程序员之间开始一个激烈的,或者说有争议的讨论很简单,只需要问:“使用动态内存分配安全吗?”使用动态内存分配安全吗?在C语言程序开发中,动态
发表于 12-15 06:10
使用动态内存分配安全吗
[导读]想在C语言程序员之间开始一个激烈的,或者说有争议的讨论很简单,只需要问:“使用动态内存分配安全吗?”想在C语言程序员之间开始一个激烈的,或者说有争议的讨论很简单,只需要问:“使用动态内存
发表于 12-15 07:44
RTThread的动态内存空间该如何去分配呢
关于rtt的动态内存空间分配,想问一下以下我的几点理解是对的吗1、我看RTT NANO和MASTER版本的动态内存分配好像不太一样,我的理解是MASTER版本的
发表于 08-31 14:34
单片机系统进行动态内存分配和任务调度思想的资料和代码实例说明
内存分配设计思想:我们设置动态内存分配的初衷在于:有些单片机系统内存资源比较少,便显得特别珍贵,
发表于 09-30 17:13
•4次下载
关于stm32 MCU申请动态内存malloc的认识
首先,malloc( )属于标准C语言函数,当然可以在单片机上使用,如STM32可以先在启动文件中设置heap的大小,再使用动态内存分配: Heap_Size EQU 0x00000200 \\也就
发表于 11-18 16:21
•14次下载
评论