我正在阅读有关堆栈指针的 [1] 以及了解 ebp(函数堆栈的开始)和 esp(结束)的需要。文章说你需要知道这两个,因为堆栈可以增长,但我不明白这在 c/c++ 中是如何实现的。(我不是在谈论另一个函数调用,因为在我看来这会使堆栈增长,做一些事情,然后递归地被弹出并返回到调用前的状态)
我做了一些研究,只看到有人说new
在堆上分配。但是指针将是一个局部变量,对吗?这在编译时是已知的,并在调用函数时保留在堆栈中。
我开始认为,也许使用循环你有不受控制的局部变量数量
int a;
for (int i = 0; i < n; ++i)
int b = i + 3;
但是不,这不会分配 n 次b
,并且只保留 1 个 int ,就像它用于a
.
所以……有什么例子吗?
[1): http://en.wikibooks.org/wiki/X86_Disassembly/Functions_and_Stack_Frames