【发布时间】:2012-04-08 14:45:58
【问题描述】:
我从 /proc/pid/maps 中看到了 linux-64 位 C 程序的堆栈大小。我可以看到以下与堆栈大小有关的行。
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的地址来看看堆栈有多少增长空间会很有趣。