嵌入式大厂面经 6(持续更新中!)
这是一个嵌入式大厂面试题专栏,每天更新高频面试题。专栏将包含题目描述、详细解析、相关知识点扩展以及实际代码示例。内容涵盖操作系统、驱动开发、通信协议等核心领域,并结合实际项目经验进行分析。每道题目都会附带面试官可能的追问方向,帮助大家更好地准备面试!
1. 内存对齐
基本概念
- CPU访问内存时,按照特定字节大小(对齐边界)进行访问
- 提高内存访问效率,但可能造成内存空间浪费
// 内存对齐示例
struct Example1 { // 不优化
char a; // 1字节
double b; // 8字节
int c; // 4字节
}; // 总大小24字节
struct Example2 { // 优化排序
double b; // 8字节
int c; // 4字节
char a; // 1字节
}; // 总大小16字节
// 指定对齐方式
#pragma pack(1) // 1字节对齐
struct Example3 {
char a;
double b;
int c;
}; // 总大小13字节
#pragma pack() // 恢复默认对齐
2. 内存泄漏
定义
- 程序申请的内存空间未被正确释放
- 导致可用内存逐渐减少
常见情况和解决方法
// 1. 常见内存泄漏
void badFunction(void) {
int *p = (int*)malloc(sizeof(int));
return; // 忘记释放内存
}
// 2. 正确的内存管理
void goodFunction(void) {
int *p = (int*)mal
剩余60%内容,订阅专栏后可继续查看/也可单篇购买
嵌入式面试八股文全集 文章被收录于专栏
这是一个全面的嵌入式面试专栏。主要内容将包括:操作系统(进程管理、内存管理、文件系统等)、嵌入式系统(启动流程、驱动开发、中断管理等)、网络通信(TCP/IP协议栈、Socket编程等)、开发工具(交叉编译、调试工具等)以及实际项目经验分享。专栏将采用理论结合实践的方式,每个知识点都会附带相关的面试真题和答案解析。