我在Linux 64位系统中查看了一个C程序的/proc/pid/maps文件,发现了与栈大小相关的以下行:
7fffc2e14000-7fffc2e35000 rw-p 00000000 00:00 0 [stack]
我不理解上述的值。如果我计算它们的差值,得到的是十进制的 135168,但这并不接近 8MB。我是否理解有误?
但是如果我打印出 rlimit:
int main (void)
{
struct rlimit limit;
getrlimit (RLIMIT_STACK, &limit);
printf ("\nStack Limit = %ld and %ld max\n", limit.rlim_cur, limit.rlim_max);
}
输出: 堆栈限制 = 8388608和-1最大值
我得到了堆栈限制=8388608,这相当于8MB。
struct rlimit
,它就那么大。;-) 猜测它还有一些增长空间...打印limit
的地址会很有趣,可以看到堆栈增长的空间有多大。 - mpontillo