线程的栈空间是从主线程的栈上分配的么,而且所有线程栈总大小不超过 ulimit -s ?
下面是针对windows说的。linux应该差不太大。线程的栈空间是直接从进程的地址空间上面分布的,一个线程有2个栈(ring 0一个,ring 3一个),栈是线程独立的。创建线程的时候就有栈的分配,可以指定栈的大小,不指定使用默认值。回到你的问题,主线程也是一个线程,有自己的栈空间,如果再开其他线程就会在分配栈。
ulimit -s是设置进程堆栈的最大值的命令。所以堆栈应该不能过这个值。
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
暂无简介
文章 0 评论 0
接受
发布评论
评论(1)
下面是针对windows说的。linux应该差不太大。
线程的栈空间是直接从进程的地址空间上面分布的,一个线程有2个栈(ring 0一个,ring 3一个),栈是线程独立的。创建线程的时候就有栈的分配,可以指定栈的大小,不指定使用默认值。
回到你的问题,主线程也是一个线程,有自己的栈空间,如果再开其他线程就会在分配栈。
ulimit -s是设置进程堆栈的最大值的命令。所以堆栈应该不能过这个值。