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