如何确定堆栈指针的初始值?
程序加载器初始化/加载text
, data+bss
区域。 这些在进程的虚拟地址空间附近分配。 随后堆(数据+ bss之后)向更大的地址增长。 堆栈从大到小的地址增长。
我想知道如何确定堆栈指针的初始值。
如果我要求每个进程的虚拟地址限制( ulimit -v
),我会得到
virtual memory (kbytes, -v) unlimited
现在,这种unlimited
当然是指有限数量的位可用于寻址的技术限制(在64位Linux上,我记得48位?!)
那么,这是否简单,除非应用了不同的ulimit
,否则堆栈指针大致初始化为(vmem + 2 ^ 48位开始)?
上一篇: How is the initial value of the stack pointer determined?