C++ 内联函数详解

内联函数用于优化程序运行速度,通过在编译时替换函数调用来避免运行时的函数调用开销。然而,这可能导致代码膨胀和更高的内存使用。当函数体较大或包含循环时,内联可能不适用。声明内联函数可以在函数声明或定义前加上`inline`关键字。
摘要由CSDN通过智能技术生成

内联函数的引入是为了“提高程序运行速度”而做的一项改进。

函数在调用的时候,将会使程序跳到另一个地址(函数的地址),并且在函数结束的时候返回。 执行到函数调用指令时,程序将在函数调用后转储该指令的地址,并且将函数参数复制到堆栈,跳转到标记函数起点的内存单元,执行函数代码,然后返回到地址被保存的指令处。在使用函数的时候,来回跳转并记录跳转位置会带来一定的开销。因此,引入了内联函数。

内联函数在编译的时候,将使用相应的函数代码来代替函数调用。这样一来,程序就不用跳转到另一个位置去执行函数代码了(因为已经有副本了)。所以,使用内联函数会使运行速度提升。

但是,使用内联函数是有代价的:

  1. 内联函数的使用会带来“代码膨胀”的问题,也需要占用更多的内存;
  2. 对内联函数进行任何修改,都需重新编译。因为编译器需要重新更换一次所有的代码,否则将会继续使用旧的函数。

所以,在使用内联函数前要进行衡量,衡量的准则如下:(之一)

如果函数体内的代码比较长,使得内联将导致内存消耗代价比较高;
如果函数体内出现循环,那么执行函数体内代码的时间要比函数调用的开销大;

那么就不宜使用内联函数。

声明内联函数的规则如下(选择其中之一即可!!!):

在函数声明前加关键字inline;
在函数定义前加关键字inline;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值