C-线程栈空间在哪分配

发布于 2016-12-01 03:23:01 字数 51 浏览 1348 评论 1

线程的栈空间是从主线程的栈上分配的么,而且所有线程栈总大小不超过 ulimit -s ?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

归属感 2017-10-03 22:55:36

下面是针对windows说的。linux应该差不太大。
线程的栈空间是直接从进程的地址空间上面分布的,一个线程有2个栈(ring 0一个,ring 3一个),栈是线程独立的。创建线程的时候就有栈的分配,可以指定栈的大小,不指定使用默认值。
回到你的问题,主线程也是一个线程,有自己的栈空间,如果再开其他线程就会在分配栈。

ulimit -s是设置进程堆栈的最大值的命令。所以堆栈应该不能过这个值。

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文