【C/C++】随笔1

本文详细介绍了函数调用的过程及其带来的开销,并提出了使用内联(inline)解决小函数频繁调用导致栈空间浪费的方法。同时,还讨论了TCP的三次握手和四次挥手流程,以及对齐指令 #pragma pack 的应用。
摘要由CSDN通过智能技术生成

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; //都是定义一个全局变量

转载于:https://www.cnblogs.com/amadios/p/11542591.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值