如何确定堆栈指针的初始值?

程序加载器初始化/加载textdata+bss区域。 这些在进程的虚拟地址空间附近分配。 随后堆(数据+ bss之后)向更大的地址增长。 堆栈从大到小的地址增长。

我想知道如何确定堆栈指针的初始值。

如果我要求每个进程的虚拟地址限制( ulimit -v ),我会得到

virtual memory          (kbytes, -v) unlimited

现在,这种unlimited当然是指有限数量的位可用于寻址的技术限制(在64位Linux上,我记得48位?!)

那么,这是否简单,除非应用了不同的ulimit ,否则堆栈指针大致初始化为(vmem + 2 ^ 48位开始)?

链接地址: http://www.djcxy.com/p/14087.html

上一篇: How is the initial value of the stack pointer determined?

下一篇: Maximum call stack size exceeded error