Windows下C++程序默認的棧空間是2M(VC++2008編譯器默認1M,這個值是可以在編譯器中設置的。
隨手寫了一段棧溢出的代碼:
#include <iostream>
using std::cout;
using std::endl;
int main()
{
int a[1024][256]={0}; //在棧上分配,大小爲1M,運行時棧溢出掛掉!
return 0;
}
最簡單的修改方法,聲明動態數組,在堆上面分配。如果對性能過於敏感,可以用內存池。