1、用变量a给出下面的定义:一个有10个指针的数组,该指针指向一个函数,该函数有一个整型参数并返回一个整型数。

解答:这一道题主要容易错的地方就是:函数指针、指针数组。

int (*a[10])(int);

举一反三

2、给定一个整型变量a,写两段代码,第一个设置a的bit3,第二个清除a的bit3。

解答:这道题清除a的bit3,使用“&=~”的方法。

#define BIT3 (0x1 << 3)
static int a;void set_bit3(void)
{a |= BIT3;
}
void clear_bit3(void)
{a &= ~BIT3;
}

3、嵌入式系统经常具有要求程序员去访问某特定的内存位置的特点。在某工程中,要求设置一绝对地址为0x67a9的整型变量的值为0xaa66。

解答:这一问题测试你是否知道为了访问一绝对地址,把一个整型数(绝对地址)强制转换为一指针是合法的。

int *ptr;
ptr = (int *)0x67a9;
*ptr = 0xaa66;

举一反三

4、下面的代码输出是什么,为什么?

void foo(void)
{unsigned int a = 6;int b = -20;(a+b > 6) ? puts("> 6") : puts("<= 6");
}

5、尽管不像非嵌入式计算机那么常见,嵌入式系统还是有从堆(heap)中动态分配内存的过程的。那么嵌入式系统中,动态分配内存可能发生的问题是什么?

解答:动态分配将不可避免会产生问题:

  • 内存泄露:内存泄露通常是程序自身编码缺陷造成,常见的 malloc内存后没有free等类似的操作, 系统在运行过程当中反复的malloc,吃掉系统内存,造成内核OOM,将某个进程需要申请内存的杀死而退出。
  • 内存碎片:内存碎片是一个系统问题,反复的malloc和 free,而free后的内存又不能马上被系统回收利用。这个是因为负责动态分配内存的分配算法使得这些空闲的内存无法使用,这一问题的发生,原因在于这些空闲内存以小且不连续方式出现在不同的位置。

笔者点评

FreeRTOS实时操作系统,里面文件 headx.c有内存回收机制,所以在嵌入式设备MCU内嵌FreeRTOS实时操作系统。当malloc、free完之后,内存回收机制就会自动回收内存,把碎片内存重新恢复如新,用户可以放心使用malloc、free。

但是,普通的单片机,没有像FreeRTOS里面的 headx.c 内存回收机制的话,就会产生上述所说的内存泄漏内存碎片问题,所以此种情况,不建议使用malloc、free的诸如单链表或双链表,笔者建议使用环形队列。

日积月累 2021/12/10相关推荐

  1. 2021.12.10 vue 路由 (13)

    什么是路由? 这里的路由并不是指我们平时所说的硬件路由器,这里的路由就是SPA(single page application)的路径管理器.vue的单页面应用是基于路由和组件的,路由用于设定访问路径 ...

  2. 每日阅读2021.12.10

    There was a time not long ago when new science Ph.D.s in the United Stated were expected to pursue a ...

  3. 12.10日刷知乎,看到有关传销的一个触动心灵 感慨悲伤无奈的故事 2021.12.10日上午10点半

    身边也有好几个亲人进过传销,最新的人也进去过,有及时脱身的,有惊险逃掉的,有被骗数年,最后警察一窝端而坐牢的...,人性难测,让人感慨,可是刷了半天知乎,看到这里,却又感到深深的无奈而伤痛,读大学的意 ...

  4. 你好,计算机世界(2021/12/10)

    大家好,我叫史丰源,是石河子大学计算机大类的大一新生,很高兴能在这里遇见你们,俗话说:所有的相遇,都是命中注定.今天,我正式地迈入了计算机世界的大门,并且遇见了可爱的你们. 在小时候,我比较喜欢打游戏 ...

  5. 2021年10月11月总结12月计划

    2021年10月11月总结12月计划 综合评价: 面子并不值钱.不要动不动就觉得伤自尊了.不要让面子问题成为自己的负资产.什么事情理性一些,做自己觉得最正确的事情,不要为了所谓的面子,而让自己吃亏,反 ...

  6. 2021年10月国产数据库排行榜:达梦反超OceanBase夺榜眼,TDSQL实现“四连增”,数据生态加速建设

    2021年10月国产数据库排行榜已在墨天轮发布,本月共有150家数据库参与排名.我们可以用"半江瑟瑟半江红"来形容10月份数据库分数涨跌情况.除去分数没有变化的数据库,分数上涨和下 ...

  7. 《安富莱嵌入式周报》第245期:2021.12.20--2021.12.26

    往期周报汇总地址:嵌入式周报 - uCOS & uCGUI & emWin & embOS & TouchGFX & ThreadX - 硬汉嵌入式论坛 - P ...

  8. 《安富莱嵌入式周报》第246期:2021.12.27--2022.01.02

    往期周报汇总地址:嵌入式周报 - uCOS & uCGUI & emWin & embOS & TouchGFX & ThreadX - 硬汉嵌入式论坛 - P ...

  9. 微软必应(Bing)打不开解决方案(2021.12.16)

    2021.12.19 0:10更新:现在Bing已修复,可直接通过https://cn.bing.com/访问~ 问题描述 2021.12.16开始必应就打不开了.. 解决方案 1. 打开主页 将原先 ...

最新文章

  1. [Tip: iShare Site] Move file/folder on iShare Site
  2. Shiro在SpringBoot中的应用
  3. JDK14性能管理工具:Jconsole详解
  4. Java字节码指令简介
  5. linux 超大文件编辑,Linux 修改打开最大文件数
  6. Python面向对象编程案例:封装数据库增删改查操作
  7. Java中六种List集合循环遍历取值
  8. php framework interop group,PHP超全局变量 - 山鹰sniper的个人空间 - OSCHINA - 中文开源技术交流社区...
  9. 四足鼎立,北京互联网产业地图
  10. 地下停车场的车内与车外,揭露了中年男人内心最沉重的痛
  11. 时序分析 45 -- 时序数据转为空间数据 (四) 格拉姆角场 python 实践 (下)
  12. 制作ios描述文件绿签+自定义描述+隐藏网址+防跳浏览器
  13. hdu 1680 Cheesy Chess
  14. sas 导入csv文件_sas导入txt、csv文件方法
  15. 原创 | GIS属性表转为Excel表格
  16. 从提高 Elasticsearch 搜索体验说开去......
  17. 2018年中国软件行业基准数据正式发布
  18. ogc是一个非营利性组织_非营利组织的21个最佳WordPress主题
  19. FlinkSql的窗口使用以及运用案例
  20. 文件夹加密超级大师使用教程

热门文章

  1. OpenKruise 开发者不容错过的带薪实习机会!马上加入 LFX Mentorship 计划
  2. 【游戏开发】minecraft基于基础科技mod打造全自动化世界
  3. Pypi上传自己库时报错的解决方案(巨详细)
  4. matplotlib: Pyplot 教程
  5. 如何输入字符串带空格?
  6. 英语口语294之每日十句口语
  7. 使用Gradle构建变体
  8. 配置构建变体build.gradle的配置
  9. 敏捷 scrum_Scrum团队的敏捷度如何?
  10. 【Spring学习之生命周期】什么是生命周期?什么是作用域?了解六种作用域