当前位置: 技术问答>linux和unix
linux下,进程的堆栈大小到底是OS决定的还是编译器决定的?
来源: 互联网 发布时间:2017-02-04
本文导语: 如果是OS决定的,所有进程堆栈大小应该都是一样的吧? 但是clone函数 int clone(int (*fn)(void *), void *child_stack, int flags, void *arg) 又可以在运行时决定堆栈的大小,这似乎不是系统规定好的。 如果是编译器在链接的...
如果是OS决定的,所有进程堆栈大小应该都是一样的吧?
但是clone函数
int clone(int (*fn)(void *), void *child_stack, int flags, void *arg)
又可以在运行时决定堆栈的大小,这似乎不是系统规定好的。
如果是编译器在链接的时候决定的,那么就应该不能动态修改啊。如何解释clone函数可以设定堆栈大小呢?
谢谢!
但是clone函数
int clone(int (*fn)(void *), void *child_stack, int flags, void *arg)
又可以在运行时决定堆栈的大小,这似乎不是系统规定好的。
如果是编译器在链接的时候决定的,那么就应该不能动态修改啊。如何解释clone函数可以设定堆栈大小呢?
谢谢!
|
Windows下,对于VC编译器,据说是链接的时候指定的。
|
系统肯定有默认的堆栈大小,但是用户在创建进程时,也是可修改的。
|
ulimit -s xx