更多课程 选择中心

嵌入式培训
达内IT学院

400-111-8989

嵌入式学习中动态内存和静态内存如何选择?

  • 发布:嵌入式培训
  • 来源:嵌入式教程
  • 时间:2019-10-22 15:15

在我们生活过程中,会出现很多的问题比如,哪两个颜色或样式的衣服搭配更好看,哪些食物更有利于身体健康。在学习嵌入式中同样也会有各种各样的问题,比如嵌入式动态内存和静态内存该如何选择?针对这个问题,我为大家做出下面系列解答。

首先我们要知道嵌入式培训中动静态内存那个使用更好,就要了解他们个个的优缺点,下面我就为大家总结了以下优缺点:来看一下静态内存和动态内存的对比如下:

1. 创建的时间不同: 区别如下:静态分配发生在程序编译和连接的时候。而动态分配则发生在程序调入和执行的时候。

2. 创建的空间不同:堆都是动态分配的,没有静态分配的堆。栈有2种分配方式:静态分配和动态分配。静态分配是编译器完成的,比如局部变量的分配。动态分配由函数malloc进行分配。不过栈的动态分配和堆不同,他的动态分配是由编译器进行释放,无需我们手工实现。

针对以上两点我给大家做出了更详细的文案:

1.静态内存编译阶段就分配好了,不会存在分配失败的情况,除非系统内存被分配完了,但是在编译阶段就可以查出。动态内存在运行中分配,在正常运行的情况下可能够正常分配,在某种环境下可能分配失败 ,这样就对开发者的代码水平要求更高,要求开发者需要对代码的健壮性有要求。

2.静态内存由于是编译阶段分配好的,而动态内存是由运行中分配,这样动态内存可以被高效复用,当某段程序使用完毕后,可以将内存交换给内存池中等待下次程序的分配,由于这种机制,开发者可以利用更小的内存开发更大型的程序。

3. 动态内存由于是动态分配,所以涉及到分配和释放的问题,假设X程序在分配了ABC3块内存,程序执行完毕后AC区域内存被释放,但是由于开发者的疏忽导致B区域的内存被遗留。而X程序又是会被反复调用的,这样我们的内存区域由于有没有释放的区域导致每次调用就会占用一段区域,最终系统就没有内存可以使用。这种情况一般在产品实际体现为最开始的时候设备正常工作,但是运行了几个小时或者几天后死机。这种情况一般被称作内存泄漏(Memory Leak)。

4. 在嵌入式RTOS中线程函数中使用静态内存,也就是在线程中定义局部变量,会加大线程栈空间的开销。

说到了这里,大家就可以一下看出自己该如何选择,在嵌入式中选择动态内存和静态内存的特点以及他们的对比我已经在文章中书写出来了,大家如果对嵌入式还有什么想法的话,可以直接咨询我们,我们有专业的导师为您解答。

预约申请免费试听课

填写下面表单即可预约申请免费试听!怕钱不够?可就业挣钱后再付学费! 怕学不会?助教全程陪读,随时解惑!担心就业?一地学习,可全国推荐就业!

上一篇:单片机内部结构是怎样的?
下一篇:嵌入式Linux系统启动过程详解

裸编程怎么做?裸编程具体做法

嵌入式编程中你必须知道的小知识

嵌入式C语言编程小知识总结

有哪些工具可以让嵌入式开发事半功倍?

  • 扫码领取资料

    回复关键字:视频资料

    免费领取 达内课程视频学习资料

  • 搜索抖音号

    搜索抖音号:1821685962

    免费领取达内课程视频学习资料

Copyright © 2021 Tedu.cn All Rights Reserved 京ICP备08000853号-56 京公网安备 11010802029508号 达内时代科技集团有限公司 版权所有

选择城市和中心
黑龙江省

吉林省

河北省

湖南省

贵州省

云南省

广西省

海南省