【发布时间】:2012-05-14 20:55:15
【问题描述】:
我正在学习 masm32,遵循一些教程。 在一个教程中:http://win32assembly.online.fr/tut3.html 有说明:
LOCAL 指令从堆栈中为局部变量分配内存 函数中使用。一堆 LOCAL 指令必须是 紧接在 PROC 指令的下方。 LOCAL 指令是 紧随其后的是:。 所以 LOCAL wc:WNDCLASSEX 告诉 MASM 从堆栈分配内存 名为 wc 的变量的 WNDCLASSEX 结构的大小。我们可以 在我们的代码中引用 wc 没有涉及堆栈的任何困难 操纵。这真是天赐之物,我想。缺点是 局部变量不能在它们创建的函数之外使用 并在函数返回时自动销毁 呼叫者。另一个缺点是您无法初始化局部变量 自动因为它们只是动态分配的堆栈内存 输入函数时。您必须手动分配它们 LOCAL 指令后的所需值。
我一直被告知堆栈内存是静态的,而任何动态分配都是堆内存。 那么,我们真的可以将它们视为 C++ 意义上的本地人吗? 在 C++ 中创建局部变量时,这些变量是否也会动态分配到堆栈上?
【问题讨论】: