我认为这是区分C程序员和嵌入式系统程序员的最基本的问题。嵌入式系统程序员经常同硬件、中断、RTOS等等打交道,所用这些都要求volatile变量。不懂得volatile内容将会带来灾难。 假设被面试者正确地回答了这是问题(嗯,怀疑这否会是这样),我将稍微深究一下,看一下这家伙是不是直正懂得volatile完全的重要性。 1). ...
14.尽管不像非嵌入式计算机那么常见,嵌入式系统还是有从堆(heap)中动态分配内存的过程的。那么嵌入式系统中,动态分配内存可能发生的问题是什么? 这里,面试者被期望能提到内存碎片,碎片收集的问题,变量的持行时间等等。这个主题已经在ESP杂志中被广泛地讨论过了(主要是P.J. Plauger,他的解释远远超过笔者这里能提到的...
Valgrind:这是一个强大的开源工具,用于检查C/C++程序中的内存管理问题,包括内存泄漏。 valgrind --leak-check=full ./your_program AddressSanitizer (ASan):这是GCC和Clang提供的一种编译器工具,可以用来检测C/C++代码中的内存错误,包括缓冲区溢出、使用后释放等。在编译时加上-fsanitize=address选项: gcc -fsanit...
1.进程间通信的方式有哪几种,说一说他们的特点:管道,socket,mmap映射,信号。2.线程同步的方式和其特点:读写锁,条件变量,互斥锁,信号量,死锁。3.说一说makefile的用法:基础规则。4.介绍一下生产者消费者模型以及代码的编写。5.文件I/O中,read/write函数的参数和
在嵌入式领域,C 语言的运用广泛且深入。从微控制器编程到复杂的嵌入式系统开发,C 语言都发挥着巨大的作用。以下问题涵盖了C、下位机、操作系统、上位机等,涵盖范围很广。单纯嵌入式C的能力考虑能掌握前半部分的大部分知识点就很不错了。后半段考验的大部分是属于编码规范、生态和上位机等等。建议同时阅读项目make...