C 内联函数和内存使用

标签 c inline-method

如果我使用内联函数,内存使用量会增加吗?

最佳答案

内联函数会影响两种内存使用情况:

代码大小 — 通常,内联代码会增加用于加载程序的内存量。这是因为生成的代码的多个副本散布在您的程序周围。然而,这并不总是正确的——如果您的内联函数只使用了一次,则几乎没有变化,并且如果内联函数非常小,您可以通过消除函数调用开销来净减少代码大小。此外,优化器可能会减小函数的大小,优化器能够删除特定内联调用中未使用的代码。

堆栈使用 — 如果您的内联函数有很多局部变量,那么您可能会使用更多的堆栈空间。在 C 语言中,编译器通常在函数入口处为函数分配一次堆栈空间。这必须足够大以容纳所有未存储在寄存器中的局部变量。如果您离线调用一个函数,该函数的堆栈将一直使用,直到它返回,当它再次被释放时。如果您内联该函数,那么该堆栈空间将在 super 函数的整个生命周期内一直使用。

内联不会影响堆的使用,因为内联代码会发生与非内联版本相同的分配和释放。

关于C 内联函数和内存使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/280173/

相关文章:

C++ 模板和内联

c++ - 正则表达式。查找所有非拉丁字符的单词

c - C中的二进制搜索功能

c - 在c中拆分字符串

c - qsort 比较全零

c++ - 内联构造函数?解释这种行为[C++]

c - 使用 getopt 获取 optarg

java - Java中的内联

c++ - 如何避免使用内联函数重复代码?