当调用C r e a t e T h r e a d时,如果传递的值不是0,就能使该函数将所有的存储器保留并分配给
线程的堆栈。由于所有的存储器预先作了分配,因此可以确保线程拥有指定容量的可用堆栈存
储器。保留空间的容量既可以是/ S TA C K链接程序设定的容量,也可以是C b S t a c k的值,谁大就
用谁。分配的存储器容量应该与传递的c b S t a c k值相一致。如果将0传递给C b S t a c k参数,
C r e a t e T h r e a d就保留一个区域,并且将链接程序嵌入. e x e文件的/ S TA C K链接程序开关信息指明
的存储器容量分配给线程堆栈。
保留空间的容量用于为堆栈设置一个上限,这样就可以抓住代码中的循环递归错误。例如,
你编写一个递归自调用函数,该函数也包含导致循环递归的一个错误。每次函数调用自己的时候,
堆栈上就创建一个新的堆栈框。如果系统不设定堆栈的最大值,该递归函数就永远不会停止对自
己的调用。进程的所有地址空间将被分配,大量的物理存储器将被分配给该堆栈。通过设置一个
堆栈限制值,就可以防止应用程序用完大量的物理存储器,同时,也可以更快地知道何时程序中
出现了错误(第1 6章中的S u m m a t i o n示例应用程序显示了如何跟踪和处理应用程序中的堆栈溢出)
线程的堆栈。由于所有的存储器预先作了分配,因此可以确保线程拥有指定容量的可用堆栈存
储器。保留空间的容量既可以是/ S TA C K链接程序设定的容量,也可以是C b S t a c k的值,谁大就
用谁。分配的存储器容量应该与传递的c b S t a c k值相一致。如果将0传递给C b S t a c k参数,
C r e a t e T h r e a d就保留一个区域,并且将链接程序嵌入. e x e文件的/ S TA C K链接程序开关信息指明
的存储器容量分配给线程堆栈。
保留空间的容量用于为堆栈设置一个上限,这样就可以抓住代码中的循环递归错误。例如,
你编写一个递归自调用函数,该函数也包含导致循环递归的一个错误。每次函数调用自己的时候,
堆栈上就创建一个新的堆栈框。如果系统不设定堆栈的最大值,该递归函数就永远不会停止对自
己的调用。进程的所有地址空间将被分配,大量的物理存储器将被分配给该堆栈。通过设置一个
堆栈限制值,就可以防止应用程序用完大量的物理存储器,同时,也可以更快地知道何时程序中
出现了错误(第1 6章中的S u m m a t i o n示例应用程序显示了如何跟踪和处理应用程序中的堆栈溢出)