每个线程都有一个堆栈那么,这个堆栈多大呢?
HANDLE CreateThread(
LPSECURITY_ATTRIBUTES
-那默认大小又是多少?
写个小程序算一下~
#include
#include
#define STACK_SIZE 0.5*1024*1024
DWORD WINAPI ThreadFunc(PVOID pvParam)
{
DWORD dwRet = 0;
printf("%-3d:0x%x\n",pvParam,&dwRet);
return dwRet;
}
int
main(int,char**)
{
DWORD dwTid;
printf("Main:0x%x\n",&dwTid);
for(int i=0;i<50;i++)
CreateThread(NULL,STACK_SIZE,ThreadFunc,(PVOID)i,0,&dwTid); // 莫小注:原作者这处代码有错,这不能修改线程栈大小
Sleep(2000);
return 0;
}
输出:
Main:0x12ff78
0 :0x50ffb0
1 :0x60ffb0
2 :0x70ffb0
3 :0x80ffb0
4 :0x90ffb0
0x60ffb0 - 0x50ffb0 = 0x100000 byte = 1MB
那么这