首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

关于主线程概念和线程栈大小疑点

2012-03-22 
关于主线程概念和线程栈大小问题?最近在调试一个程序时发现由于线程的栈空间大于windows默认的栈大小1M,导

关于主线程概念和线程栈大小问题?
最近在调试一个程序时发现由于线程的栈空间大于windows默认的栈大小1M,导致线程创建失败,从而引起了以下疑惑:
1.主线程的概念
据查资料,进程至少存在一个线程,称为主线程,而进程的执行是由main函数里面开始执行的(抛开运行库的入口函数之类的不说),可否认为执行main函数的即为主线程?
2.线程栈大小
windows默认的线程栈大小为1M(当然可以重新设置大小,此处不讨论),哪么此处的线程包括主线程吗?我做了下测试:
#include <stdio.h>
int main()
{
char max_test[1024*1024*8]; \\8M空间
printf("test");
}
以上程序的8M空间应该是放在栈空间里面的,为何此时不会出错呢?
通常说深的递归引起栈溢出,于是加了个递归:
void test(int n)
{
char max_test[1024*1024*500]; \\500M栈空间
if (n != 0)
test(n - 1);
else
printf("succedd\n");
}

int main()
{
char max_test[1024*1024*8];
test(10);
}
上面的程序没有提示出错,有点疑惑。。。
应该是我的某些概念理解错了,求各位指点下....

[解决办法]
主线程就是进程的第一个线程

你下面根本没用到那个数组,所以编译器优化时可以去掉
[解决办法]
vs 2008 运行楼主的代码,存在栈问题
[解决办法]

探讨
引用:

主线程就是进程的第一个线程


哪可否理解执行main的就为主线程呢??

热点排行