windows线程的栈申请与设置

Windows线程栈空间默认是1M(linux线程栈大小默认为8M),手动配置该值时(通过/STACK开关或者def文件的STACK指令),系统实际分配的栈大小是该值向上舍入到最近的整数倍栈粒度(一般是64K,可调用GetSystemInfo查询)大小,比如在/STACK中手动配置值为65K,系统则会分配128K(=2 * 64K)的栈空间。
CreateThread函数中的dwStackSize参数并不是为新线程指定的栈空间大小,它是初次提交给线程栈空间的页面大小,系统实际提交的大小是该值向上舍入到最近的页面文件大小整数倍大小,比如指定dwStackSize为13K时,由于页面文件一般为4K,因此系统将实际提交4*4 = 16K的页面文件。
如果dwStackSize大于/STACK的指定值或默认值1M,系统将调整线程栈大小,使其变为dwStackSize向上舍入且距离dwStackSize最近的1M的整数倍。比如dwStackSize设置为2049K,且/STACK保持默认值1M,则系统将线程栈空间调整为3M。

你可能感兴趣的:(Windows)