|
|
1
3
这是技术观点。这对语言律师来说可能并不有趣,但对其他人来说,可能会对我有启发。
函数以将控制权转移回调用方的分支指令精确结束。在这一点之前,被调用者拥有完全控制权,在这一点之后,调用者拥有对CPU所做事情的完全控制权。通常,只有一条CPU指令用于此控制传输。在X86-64上,这是
函数本身负责的任何事情都必须在该指令之前发生,与被调用方无关的任何事情都必须发生在其他地方。
由于调用方不知道函数创建了哪些变量,因此调用方不能负责销毁这些变量。更一般地说,被调用方必须释放为其自身目的分配的任何堆栈空间。因此,被调用方必须在退出之前通过发出
当涉及到从函数返回结果时,情况要复杂一些:这需要调用方和被调用方进行协作。不同调用约定的细节不同,但通常有两种情况:
TL;DR:如果某件事是函数的责任,那么它必须在函数返回(=执行
|
|
|
2
1
之前对于按值返回的函数,将初始化调用站点上的临时 之前 函数的范围退出。否则,任何返回值都将在传递到调用站点之前被销毁。 |
|
|
3
0
函数在返回语句后结束
|
|
AstralHex · 矩阵乘法代码工作不正常 1 年前 |
|
|
Fishie · 作为类成员的智能指针是否仍然自动释放?[关闭] 1 年前 |
|
|
Die4Toast · 递归调用成员箭头运算符-> 1 年前 |
|
|
Anka Hanım · 关于结构和动态数组地址的问题 1 年前 |