2013-11-04 113 views
2

我想在堆棧上使用大型數組。不過,儘管我更改了堆棧保留大小,但我一直在獲取堆棧溢出。 例如:增加堆棧保留大小不會防止堆棧溢出

int main() 
{ 
    int a[5000000]; 
    return 0; 
} 

和在Visual Studio 2012:Properties -> Linker -> System -> Stack reserve size: 10000000

這是什麼原因呢?

回答

5

int的大小可能是4個字節,所以該數組的字節數大於元素數。 sizeof(int)*5000000是你需要的。 (至少)

+0

是的,這就是原因......這很奇怪,因爲我之前嘗試過這樣做,我注意到將堆棧保留大小加1會讓我再定義一個int(=我的計算機上的DWORD大小):我把堆棧保留大小0,它讓我做一個大小爲62200的整數數組,當我把它放在1時,它讓我定義一個大小爲62201的數組.. –