Window程序的栈默认大小是多少?

描述

无论在Window还是Linux上,我们写代码的时候,不管是应用程序还是内核,都有必要了解内存的大小。当然,也需要了解栈大小。

前两天,微信群里就讨论了这样的问题,大家对于栈和堆的理解,可以在评论去说下自己的看法。

在 Window 下:

有些资料会说明Window程序的栈默认大小是2M,但我们讨论了很久,并不知道2M大小是如何得来的。

首先我写了一个测试程序来测试栈大小,结果如下:

Linux系统

使用DEVC++执行如下:

Linux系统

看起来是接近2M,然后我们查了下资料,有一个比较官方的资料说明了栈的大小应该是1M。

Linux系统

那我们测试出来的结果还是没有找到原因,但是我们可以尝试设置下程序的栈大小。

Linux系统

通过这样设置后,可以看到测试出来的栈大小与设置的相符合的。

Linux系统

在 Linux 下:

Linux中测试栈的大小比较容易:

Linux系统

当然,我们可以用命令来获取堆栈大小或者设置堆栈大小。

Linux系统

也可以查进程信息:

Linux系统

实验下设置堆栈的大小:

Linux系统

这里面有一个小技巧:

Once ulimit is set it can only be lowered never raised. ulimit

设置后,只能降低而不能提高。

Linux系统





审核编辑:刘清

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分