104|2

7031

帖子

11

TA的资源

版主

楼主
 

《Hello算法》4、淡淡数组的优点与局限性 [复制链接]

 

在单片机开发中数组可以说是无处不在,在串口接收缓冲区,在IIC的发送中,SPI发送中,特别是DMA的发送,都是用于数组的。数中列举了组数的遍历,查找、都是日常的用法。但是数据的插入与扩容,基本没怎么用到。

在书中,作者写到了优点与局限性:

数组存储在连续的内存空间内,且元素类型相同。这种做法包含丰富的先验信息,系统可以利用这些信息来优化数据结构的操作效率。

  • 空间效率高:数组为数据分配了连续的内存块,无须额外的结构开销。
  • 支持随机访问:数组允许在 O(1) 时间内访问任何元素。
  • 缓存局部性:当访问数组元素时,计算机不仅会加载它,还会缓存其周围的其他数据,从而借助高速缓存来提升后续操作的执行速度。

连续空间存储是一把双刃剑,其存在以下局限性。

  • 插入与删除效率低:当数组中元素较多时,插入与删除操作需要移动大量的元素。
  • 长度不可变:数组在初始化后长度就固定了,扩容数组需要将所有数据复制到新数组,开销很大。
  • 空间浪费:如果数组分配的大小超过实际所需,那么多余的空间就被浪费了。

对于作者以上的描述,在我们的单片机资源受限地环境下,所以前期对数据的规划就特别要注意,如串口缓冲区,还有比如LVGL的缓存的规划,就显得特别重要。

在我们使用DMA进行数据搬动时,也是跟上面讲的优点与局限有关系的。

 

最新回复

单片机用静态数组还是比较方便的。   详情 回复 发表于 昨天 13:27
点赞 关注
 
 

回复
举报

7670

帖子

2

TA的资源

五彩晶圆(高级)

沙发
 

单片机用静态数组还是比较方便的。

点评

对的,使用静态数组,在编译阶段就可以查找出可能存在的问题。如果动态申请,就会出现内存空间的问题。  详情 回复 发表于 昨天 16:33
个人签名

默认摸鱼,再摸鱼。2022、9、28

 
 
 

回复

7031

帖子

11

TA的资源

版主

板凳
 
freebsder 发表于 2025-1-26 13:27 单片机用静态数组还是比较方便的。

对的,使用静态数组,在编译阶段就可以查找出可能存在的问题。如果动态申请,就会出现内存空间的问题。

 
 
 

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

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/7 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表