OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 6317|回复: 8

请教原子哥!关于内存管理的一些误解?

[复制链接]

44

主题

128

帖子

1

精华

中级会员

Rank: 3Rank: 3

积分
498
金钱
498
注册时间
2012-9-13
在线时间
14 小时
发表于 2013-3-25 21:32:22 | 显示全部楼层 |阅读模式
其实我在看UCOS的时候时就发现一个不是很理解的问题!就是内存管理。内存管理只是把内存由内存函数来分配和释放。如果我要用到内存的话,用数组不也是一样吗?为什么要用内存来管理,到低有什么优点吧!这个问题想了很久都没有想明白!现在看到原子哥的教程也有一个实验是关于内存管理的,所以在这请教一下!内存管理和数组的优点在那里?谢谢!
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

51

主题

1455

帖子

3

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
2613
金钱
2613
注册时间
2011-1-25
在线时间
176 小时
发表于 2013-3-25 23:35:44 | 显示全部楼层
一直努力就很好。
回复 支持 反对

使用道具 举报

2

主题

1446

帖子

1

精华

金牌会员

Rank: 6Rank: 6

积分
2245
金钱
2245
注册时间
2010-12-16
在线时间
202 小时
发表于 2013-3-26 00:24:10 | 显示全部楼层
用数组管理也是内存管理,只不过叫做"静态内存管理".

"动态内存管理",意思很明显,不是固定的内存管理.

静态直观,动态灵活.
技术讨论请发帖 , 需要我回复请点左下的 < 回复 > 让系统通知我 . 本人不通过其他方式返回任何参数.
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165516
金钱
165516
注册时间
2010-12-1
在线时间
2116 小时
发表于 2013-3-26 00:26:38 | 显示全部楼层
回复【楼主位】lgh050706:
---------------------------------
用数组代理某些情况是可以的.
举个简单的例子:
你浏览文件夹,你不知道文件夹里面有多少个文件,如果用数组的方式,你打算怎么存储这些文件的名字?每个数组定义多长?
定义一个1000个的数组?每个数组定义20个字节?
那如果有1001个文件呢?而有的文件名长度超过20个字节呢?有的又不够20个字节呢?
此时,你的数组很明显就不好处理了.而内存管理则很好的可以解决这个问题,最大限度的利用内存.
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

44

主题

128

帖子

1

精华

中级会员

Rank: 3Rank: 3

积分
498
金钱
498
注册时间
2012-9-13
在线时间
14 小时
 楼主| 发表于 2013-3-26 09:10:41 | 显示全部楼层

大概有了概念,如果有个简单而又有代表性的实例更好!更容易理解!请问原子哥能推荐吗?

回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165516
金钱
165516
注册时间
2010-12-1
在线时间
2116 小时
发表于 2013-3-26 09:18:48 | 显示全部楼层
你就做我举的那个例子,用你说的数组方式实现以下,再用内存管理的方式实现以下,对比下即可 了。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

6

主题

65

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
274
金钱
274
注册时间
2011-2-12
在线时间
36 小时
发表于 2013-3-29 09:29:02 | 显示全部楼层
那是不是可以这样理解,如果占用的内存超过分配的内存大小了,则内存管理函数会动态的增加分配的内存(在不超过剩余内存的情况下),就好像DELPHI中的动态数组,可以动态的改变数组大小,在STM32中就是动态的改变需要的内存。
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165516
金钱
165516
注册时间
2010-12-1
在线时间
2116 小时
发表于 2013-3-29 12:12:04 | 显示全部楼层
回复【7楼】lf8013:
---------------------------------
我们的内存管理函数,一开始就确定了可供分配的 内存总大小,不能动态增加!
如果超过了可供分配的内存大小,则分配失败,执行后续处理。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

1

主题

7

帖子

0

精华

新手上路

积分
21
金钱
21
注册时间
2016-11-2
在线时间
1 小时
发表于 2016-11-3 11:50:06 | 显示全部楼层
正点原子 发表于 2013-3-29 12:12
回复【7楼】lf8013:
---------------------------------
我们的内存管理函数,一开始就确定了可供分配的&nb ...

刚刚拜读了一下原子哥的内存管理程序,好处就不多说了。但也有不足之处:
首先就是大量的memmap(内存管理表)的定义,粗略算了一下对内部SRAM,就有6400个字节用于定义内存管理表。

其次就是分配的不连续性:

内存分配

内存分配




回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-5-24 17:05

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表