嵌入式培训
达内IT学院
400-996-5531
在我们生活过程中,会出现很多的问题比如,哪两个颜色或样式的衣服搭配更好看,哪些食物更有利于身体健康。在学习嵌入式中同样也会有各种各样的问题,比如嵌入式动态内存和静态内存该如何选择?针对这个问题,我为大家做出下面系列解答。
首先我们要知道嵌入式培训中动静态内存那个使用更好,就要了解他们个个的优缺点,下面我就为大家总结了以下优缺点:来看一下静态内存和动态内存的对比如下:
1. 创建的时间不同: 区别如下:静态分配发生在程序编译和连接的时候。而动态分配则发生在程序调入和执行的时候。
2. 创建的空间不同:堆都是动态分配的,没有静态分配的堆。栈有2种分配方式:静态分配和动态分配。静态分配是编译器完成的,比如局部变量的分配。动态分配由函数malloc进行分配。不过栈的动态分配和堆不同,他的动态分配是由编译器进行释放,无需我们手工实现。
针对以上两点我给大家做出了更详细的文案:
1.静态内存编译阶段就分配好了,不会存在分配失败的情况,除非系统内存被分配完了,但是在编译阶段就可以查出。动态内存在运行中分配,在正常运行的情况下可能够正常分配,在某种环境下可能分配失败 ,这样就对开发者的代码水平要求更高,要求开发者需要对代码的健壮性有要求。
2.静态内存由于是编译阶段分配好的,而动态内存是由运行中分配,这样动态内存可以被高效复用,当某段程序使用完毕后,可以将内存交换给内存池中等待下次程序的分配,由于这种机制,开发者可以利用更小的内存开发更大型的程序。
3. 动态内存由于是动态分配,所以涉及到分配和释放的问题,假设X程序在分配了ABC3块内存,程序执行完毕后AC区域内存被释放,但是由于开发者的疏忽导致B区域的内存被遗留。而X程序又是会被反复调用的,这样我们的内存区域由于有没有释放的区域导致每次调用就会占用一段区域,最终系统就没有内存可以使用。这种情况一般在产品实际体现为最开始的时候设备正常工作,但是运行了几个小时或者几天后死机。这种情况一般被称作内存泄漏(Memory Leak)。
4. 在嵌入式RTOS中线程函数中使用静态内存,也就是在线程中定义局部变量,会加大线程栈空间的开销。
说到了这里,大家就可以一下看出自己该如何选择,在嵌入式中选择动态内存和静态内存的特点以及他们的对比我已经在文章中书写出来了,大家如果对嵌入式还有什么想法的话,可以直接咨询我们,我们有专业的导师为您解答。
填写下面表单即可预约申请免费试听!怕钱不够?可就业挣钱后再付学费! 怕学不会?助教全程陪读,随时解惑!担心就业?一地学习,可全国推荐就业!
Copyright © 京ICP备08000853号-56 京公网安备 11010802029508号 达内时代科技集团有限公司 版权所有
Tedu.cn All Rights Reserved