MASM locals:动态分配数据?

时间:2012-05-14 20:55:16

标签: c++ masm

我正在学习masm32,遵循一些教程。 在一个教程中:http://win32assembly.online.fr/tut3.html 有声明:

  

LOCAL指令从堆栈为局部变量分配内存   在函数中使用。一堆LOCAL指令必须是   紧接在PROC指令之下。 LOCAL指令是   紧接着是:。   所以LOCAL wc:WNDCLASSEX告诉MASM从堆栈中分配内存   名为wc的变量的WNDCLASSEX结构的大小。我们可以   在我们的代码中引用wc而没有任何困难涉及堆栈   操纵。我想,那真的是天赐之物。缺点是   局部变量不能在它们创建的函数之外使用   并在函数返回时自动销毁   呼叫者。另一个缺点是您无法初始化局部变量   自动因为它们只是动态分配的堆栈内存   输入功能时。您必须手动分配它们   LOCAL指令后的所需值。

我总是被告知堆栈内存是静态的,任何动态分配都是堆。 我们真的可以将那些作为C ++意义上的本地人考虑吗? 在C ++中创建局部变量时,这些变量是否也会在堆栈上动态分配?

1 个答案:

答案 0 :(得分:3)

  

那么我们真的可以将那些作为C ++意义上的本地人考虑吗?在C ++中创建局部变量时,这些变量是否也会在堆栈上动态分配?

在C ++中,本地(自动)变量存在于堆栈中,所以是和是。

它们是动态分配的,因为它们在进入/退出函数时来去。但是,正如您正确指出的那样,这种类型的分配与堆分配有很大不同。

除了堆和堆栈之外,还有第三个变量可以驻留的区域。这是数据段。这是全局以及功能级和类级static变量存在的地方。