1:函数调用过程
参数入栈,参数越多开销越大。将控制权转移到函数中。
建立新的栈帧,即当前函数使用的栈空间,使用ebp来标识新的栈帧,所以要保存原来栈的首地址。
恢复原来的栈帧,将控制权返回调用者。
2:inline
为了解决一些频繁调用的小函数大量消耗栈空间的问题,引入了inline修饰符。
inline不能包含有复杂的结构控制语句如while,switch并且不能递归
inline是对编译器的建议
类中的成员函数都是缺省内联的
inline是一种用于实现的关键字而不是用于声明,应该和函数定义放在一起
内联是以代码膨胀(每一个调用都会进行代码嵌入)为代价,仅仅省去了函数调用的开销提高效率。
3:TCP的三次握手和四次挥手
https://blog.csdn.net/qq_38950316/article/details/81087809
4:最近发现github上面有几个总结秋招的,有时间去读一读
https://interview.huihut.com/#/
https://github.com/linw7/Skill-Tree
5:#pragma pack(n) 对齐
例如:
#pragma pack(push) // 保存对齐状态 #pragma pack(4) // 设定为 4 字节对齐 struct test { char m1; double m4; int m3; }; #pragma pack(pop) // 恢复对齐状态
6:extern
extern int a;//声明一个全局变量
int a;
extern int a = 0;
int a = 0; //都是定义一个全局变量