所以我写了代码。
我不明白为什么这会是EXCEPTION_STACK_OVERFLOW?
#include <iostream>
using namespace std;
int main(){
char data[2048][2048] = {{0}};
cout << "test";
return 0;
}
即使我没有使用
char data[2048][2048];
两种情况都是一样的。
Running "main.exe", press ESC to terminate...
Crash
EXCEPTION_STACK_OVERFLOW
time consumed: 0.01 sec
time passed: 0.08 sec
peak memory: 4395008 bytes
答案 0 :(得分:2)
您的变量太大,无法将其保留在堆栈中。您应该使用动态存储持续时间。
std::unique_ptr<char[]> data(new char[2048*2048]);
但是,如果你真的想要或必须将它保留在堆栈中,这里有一个gcc标志来改变默认的堆栈大小:
- stack,4194304 其中4194304是以字节为单位的堆栈大小