2013-07-21 46 views
-1

當我嘗試創建這樣堆棧溢出VS多線程

someFunc(void* param){ 
char currFile[500000]; 
char currKeyBoard[24576]; 
char currImage[500000]; 
char currAddInfo[12000]; 
} 
_beginthread(someFunc, 0,NULL); 

程序崩潰蒙山計算器exception.But一個線程,當我做這個

someFunc(void* param){ 
char currFile[500000]; 
char currKeyBoard[24576]; 
char currImage[500000]; 
} 
_beginthread(someFunc, 0,NULL); 

程序不`噸崩潰。爲什麼?

+1

您可能會發現這很有用:[線程堆棧大小(MSDN)](http://msdn.microsoft.com/en-us/library/windows/desktop/ms686774%28v=vs.85%29.aspx) – jpw

回答

7

原因是第二個函數在堆棧上分配的內存比第一個少。這是太多的東西分配。

改爲使用向量,它們會將它分配到堆上,並且由於它們管理自己的內存,所以您不必這樣做。