CPU眼里的:返回值 | 语言硬伤

超全归纳CPU眼里的:返回值 | 语言硬伤满满干货来啦!
📇目录
1️⃣介绍
2️⃣解读
3️⃣验证
4️⃣总结
一、介绍
00:00
1️⃣世界上还有比函数返回值、更简单、更顾名思义的语法吗?
2️⃣能写一个返回数组的函数吗?
二、解读
00:28
1️⃣打开compiler explorer,写一个返回立即数的函数

2️⃣寄存器rax,就是用来传递函数的:返回值

3️⃣再写一个返回变量的函数、返回指针的函数,CPU指令完全相同


4️⃣都是在用寄存器rax向主调函数传递:返回值

三、验证
04:12
1️⃣写一个返回临时数组的函数,作函数的调用,打印数组的第一个元素,看运行结果

2️⃣随着函数的逐层返回,函数的栈帧会被就地放弃,但不会清理内存
四、总结
05:34
1️⃣对于返回原生的数据类型和指针、应用类型时,往往会使用寄存器rax向主调函数传递返回值

2️⃣对于返回复杂数据类型,则需要避免返回,栈变量或栈对象

3️⃣返回值问题的本质:内存问题
