为什么这段代码会崩溃?

时间:2010-05-20 19:24:54

标签: c++

以下代码导致堆栈溢出但我不明白为什么......

int _tmain(int argc, _TCHAR* argv[])
{
    cout << "start";
    char bmp[1024][768][3];
for (int p = 0; p < 9000; ++p)
{
    for(int i = 0; i < 1024; ++i)
    {
        for(int j = 0; j < 768; ++j)
        {
            bmp[i][j][0] = 20;
        }

    }
}

cout << "Stop";


    return 0;
}

由于

2 个答案:

答案 0 :(得分:16)

我想说这可能是因为1024 * 768 * 3是2,359,296,这对于本地堆栈来说可能太大了。

您应该在堆上分配它。

答案 1 :(得分:2)

分配int数组崩溃,因为它比默认的Windows堆栈大。尝试改变它的大小,你会发现它不再崩溃。