我对以下C代码有疑问:
void my_function()
{
int i1;
int j1;
// Do something...
if (check_something())
{
int i2;
int j2;
// Do something else...
}
// Do some more stuff...
}
Run Code Online (Sandbox Code Playgroud)
是否有关于何时为i2和j2分配/解除分配堆栈空间或是否依赖于编译器的保证?我希望当i2和j2进入范围时调整堆栈指针,并在它们超出范围时进行调整,但后来认为某些编译器可能只是"优化"整个事物并在嵌套范围内考虑变量.首先输入该功能.
我知道我可以查看我的编译器生成的汇编代码,但是想知道实现是否可以留给编译器.
谢谢!
我很犹豫要问,但我找不到VBA 的文档。
相关(但我不认为是骗子):
我想我使用“实例化”这个词是正确的,但如果我错了,请纠正我。实例化是在创建变量并为其分配所需的资源时?所以在 VBA 中,我看到了两种方法。
一切都在顶部!
Public Sub ToTheTop()
Dim var1 As Long
Dim var2 As Long
Dim var3 As Long
var1 = 10
var2 = 20
var3 = var1 + var1
Debug.Print var3
End Sub
Run Code Online (Sandbox Code Playgroud)
或接近使用
Public Sub HoldMeCloser()
Dim var1 As Long
var1 = 10
Dim var2 As Long
var2 = 20
Dim var3 As Long
var3 …Run Code Online (Sandbox Code Playgroud)