日期:2014-05-16  浏览次数:20638 次

linux下,进程的堆栈大小到底是OS决定的还是编译器决定的?
如果是OS决定的,所有进程堆栈大小应该都是一样的吧?

但是clone函数
int clone(int (*fn)(void *), void *child_stack, int flags, void *arg)
又可以在运行时决定堆栈的大小,这似乎不是系统规定好的。

如果是编译器在链接的时候决定的,那么就应该不能动态修改啊。如何解释clone函数可以设定堆栈大小呢?

谢谢!

------解决方案--------------------
Windows下,对于VC编译器,据说是链接的时候指定的。
------解决方案--------------------
ulimit -s xx




------解决方案--------------------
系统肯定有默认的堆栈大小,但是用户在创建进程时,也是可修改的。