7得票2回答
并发编程,C/C++中的堆栈

抱歉,如果这看起来像是旧问题的重复,我很抱歉。我在Stack Overflow上查看了几个问题,阅读了tanenbaum的《现代操作系统》等书籍,但仍有疑问。 首先,我希望能提供更详细的书籍或资源,以更好地理解这个结构。我不明白这些是否是OS书籍、编程语言或架构书籍中通常解释的概念。 在我...

14得票8回答
栈内存是在运行时还是编译时分配的?

堆栈是在运行时还是编译时分配的? 示例:void main() { int x; scanf("%d", &x); int arr[x]; }

10得票1回答
我的变量存储在哪里?(Swift)

这是我用Swift进行的一个小实验: func store<T>(var x: T) -> (getter: (Void -> T), setter: (T -> Void)) { return ({ x }, { x = $0 }) } x 是一个...

71得票7回答
在堆栈/堆上创建对象?

以下代码在堆栈上创建一个对象:Object o; 在堆上创建对象时,我们可以使用:Object* o; o = new Object(); 改为:Object* o = new Object(); 当我们将堆对象创建拆分成两行,并在第二行调用构造函数(o = new object())时,这...

12得票3回答
pop或者add esp, 4?有什么区别?

我看到这个问题,但在其中没有找到我的答案。 那么,为什么我更喜欢使用add esp, 4或add esp, 8而不是使用pop一次或两次?是否完全没有差别(性能、安全等),还是只是个人选择的问题?

7得票2回答
PHP中的堆栈和堆是什么?

我正在学习操作系统,有一件事我不太明白,那就是堆和栈。我知道它们的好处以及每个的工作原理,但在动态语言的情况下,我无法弄清楚如何分配栈。在静态类型的语言中,所有原始数据类型都存储在栈上,因为它们很小,并且将按照更多或更少相同的顺序进行释放,但是在像PHP这样的语言中,在运行时并不知道这一点。那...

10得票4回答
堆和栈中数据访问性能的比较

众所周知,对于大多数算法来说,在栈上分配和释放数据比在堆上执行要快得多,这是常识。在C++中,代码的差异就像: double foo[n*n] vs. double* foo = new int[n*n] 但是,当访问和计算堆栈或堆中的数据时,是否有任何重要的区别?也就是说,速度上...

7得票3回答
JVM如何知道方法栈中变量的位置?

这个问题可能有点傻,或者可能是一个重复的问题。我对程序引用变量时如何从堆栈中检索变量感到困惑。 一个对象存储在堆中,其位置存储在引用变量中,并且包含堆地址的引用变量本身存储在堆栈中。但是JVM如何找出该引用变量存储在堆栈的哪个位置。 为了澄清我的疑惑,让我们考虑以下示例。 Class Tes...

21得票4回答
x86架构中栈指针指向哪里?

例如,如果我推动ax,则[SP]指向ax值或ax后的单词?这是否与实模式和保护模式有所不同?我问这个问题是因为《汇编语言艺术》一书展示和解释了sp指向最后推送的数据,而在这个页面上OSDev Wiki - Stack它被说明为指向最后推送数据后的空单词。

13得票2回答
“pushl/popl %esp”的汇编级表示是什么?

我正在尝试理解推送和弹出堆栈指针寄存器的行为。在AT&T格式中: pushl %esp 并且 popl %esp 请注意,它们将计算出的值存回到%esp中。 我独立考虑这些指令,而不是按顺序。我知道存储在%esp中的值始终是增量/减量之前的值,但我该如何用汇编语言表示这种...