美文网首页程序员
深入理解函数调用原理

深入理解函数调用原理

作者: CoderCat | 来源:发表于2021-01-04 09:38 被阅读0次

这是一篇讲述函数调用原理的文章,通过大量的示意图从比较基础的概念开始阐述函数调用时堆栈的完整变化过程,同时还会通过具体例子来分析在X-64平台上函数调用在汇编级的表示,从而深刻理解函数调用原理。最后会提供几个例子来发现C语言函数栈帧的一些有意思的行为。

全文将带领你领略函数与栈的魅力,文章提供了gitbook的阅读方式。
如果你觉得对你有帮助,可以来到文章的github仓库点个star啊!

目录

本文可以收获什么?

  • 函数间如何转移控制
  • 函数间如何传递数据
  • 栈帧的初始化与销毁
  • C/C++数组越界的危害
  • 为什么内联(inline)函数效率高
  • 为什么尽量用循环来代替递归调用
  • 为什么静态变量在函数返回后不会被释放
  • 什么是栈溢出攻击

其他

文中有一个重要的概念内存对齐没有提及,它不属于函数调用范畴之内。我在构造示例时避免了编译器为了内存对齐而生成一些额外的指令,所以文中见不到它的影子。如果你有兴趣可以通过网络去了解与它相关的内容。

相关资源

  • 书籍:

    • 《深入理解计算机系统》(第三版)
    • 《汇编语言》(王爽第三版)
  • 公开课:

    • 《编程范式》(斯坦福公开课)

绘图工具

文中所有图片都使用了excalidraw作为绘图工具,这是一款非常棒的在线绘图工具,它提供了不同风格的绘制模式。

相关文章

  • 深入理解函数调用原理

    这是一篇讲述函数调用原理的文章,通过大量的示意图从比较基础的概念开始阐述函数调用时堆栈的完整变化过程,同时还会通过...

  • 栈帧相关-深入理解函数调用

    深入理解函数调用(下)

  • 2018-08-14 fork

    【转】进程系统调用——fork函数深入理解

  • 3-Python 函数(2)

    本章概要:1、函数基础2、深入理解函数3、综合练习 1、函数基础 课程概要:理解函数定义函数调用函数函数文档 一、...

  • 深入理解函数调用堆栈

    堆栈是C语言程序运行时一个必须的记录函数调用路径和参数的空间。堆栈提供函数调用框架,具有传递参数,保存函数返回地址...

  • javascript函数,以及闭包的理解

    javascript函数,以及闭包的理解 深入理解javascript函数定义与函数作用域深入理解javascri...

  • 开源框架_02ButterKnife

    参考文章 : ButterKnife使用和原理 深入理解ButterKnife源码并掌握原理(一) 深入理解But...

  • 三、JavaScript——call() apply() bin

    前置知识 this用法、this原理 call的理解 call 用于改变函数体内this指向,也就是说改变了调用函...

  • 理解JS立即执行函数调用原理

    函数的两种定义方法:函数声明 函数表达式 函数包括四个部分,function关键字、函数名、圆括号、花括号。期中函...

  • python基础教程:函数(2)

    上一节我们学习了函数的定义和调用,理解了基本的函数知识。本节进一步学习函数相关的更多内容,深入了解函数,包括:默认...

网友评论

    本文标题:深入理解函数调用原理

    本文链接:https://www.haomeiwen.com/subject/ktvmoktx.html