堆和栈的大小在加载的时候是确定的,但也是可以调整的,是否允许动态调整完全看操作系统是否支持。
所以,两个问题:
1. 你用的OS是什么?
2. 你用的开发语言是什么?
栈是面向于线程的,堆有可能是整个进程共用的,也可能是有好几个堆,每个线程用各自的。
Windows里MSDN有讲:
BOOL WINAPI SetThreadStackGuarantee( __inout PULONG StackSizeInBytes );
StackSizeInBytes
The size of the stack, in bytes. On return, this value is set to the size of the previous stack, in bytes.
If this parameter is 0 (zero), the function succeeds and the parameter contains the size of the current stack.
If the specified size is less than the current size, the function succeeds but ignores this request. Therefore, you cannot use this function to reduce the size of the stack.
This value cannot be larger than the reserved stack size.