我要解决一个随机输入100万个数字,然后把他们从小到大排序的问题
需要定义一个长度为100万的数组,编译可以通过,但是一运行程序就会停止,如何解决?
代码如下:
#include<iostream>
#include<algorithm>
using namespace std;
int main(){
int a,b;
int list[1000000];
cin>>a;
for(b=0;b<a;b++)
cin>>list[b];
sort(list,list+a);
for(b=0;b<a;b++)
cout<<list[b]<<endl;
return 0;
}
你这个数组申明在函数内部,属于局部变量,存放在了栈上,
看看数组占用的内存大小:1000000=1000*1000然后乘以int型数据长度
1000*1000*4byte约等于4M,
而栈的默认内存空间为1M左右,所以会导致内存溢出
解决这个问题,可以将数组申明在全局存储区或堆上即可
方法一:申明为全局变量
#include<iostream>方法二:存放在堆上
#include<iostream>