一、数组的size大小
问题:有时数组int a[10000000]
会因为size过大而系统栈内存不足而溢出报错
#include <iostream>
using namespace std;
int main() {
int a[10000000];
//stack overflow
return 0;
}
具体size因IDE不同而异,你电脑上可能1000000大小就报错,但在线IDE可能就行。
二、解决方法
1.使用非栈内存
因为是栈溢出,所以我们使用非栈内存。
(1)全局/静态存储区
/*静态变量*/
#include <iostream>
using namespace std;
int main() {
static int a[10000000];
return 0;
}
/*全局变量*/
#include <iostream>
using namespace std;
int a[10000000];
int main() {
return 0;
}
(2)堆内存
#include <iostream>
using namespace std;
int main() {
int *p=new int[10000000];
delete[] p;
return 0;
}
2.使用容器vector代替数组
#include <iostream>
#include<vector>
using namespace std;
int main() {
vector<int> c;
cout << c.max_size() << endl;
//1073741823
//容器的size超大
return 0;
}