考慮下面的代碼(用於演示目的僅):VS可能會警告可能的堆棧溢出異常嗎?
#include <iostream>
int main()
{
char pixels[4][1280][720]; // Big enough to cause a stack overflow on my machine
for (unsigned int i = 0; i < 4; i++)
{
for (unsigned int j = 0; j < 1280; j++)
{
for (unsigned int k = 0; k < 720; k++)
{
pixels[i][j][k] = i + j + k;
}
}
}
std::cout << pixels[2][640][360];
return 0;
}
據對this question解答,最大堆棧大小是由Visual Studio設置。
我正確地假設它可以警告用戶有關潛在堆棧溢出? (我自己試過,沒有得到警告)
PS:我問的唯一原因是因爲我看到很多關於SO的問題,可以通過這樣的警告來預防(是的,我不知道每個人SO用戶使用VS)。
評估複雜的代碼以準確地知道它將如何執行而不執行它是聖盃之一。不要期待你的希望。 – 2014-12-04 18:06:42
你的意思是類似於GCC'-Wstack-usage = 1234'嗎? – Fanael 2014-12-04 18:08:08
@Fanael我的意思是如果數組的大小以字節爲單位大於堆棧限制,此時堆棧溢出將發生。所以它可能會對此提出警告。是的,似乎是這樣。 – Borgleader 2014-12-04 18:09:47