超过百万的数组——解决方法

2 篇文章 0 订阅
数组申明在函数内部,属于局部变量,存放在了栈上,
看看数组占用的内存大小:1000000=1000*1000然后乘以int型数据长度
1000*1000*4byte约等于4M,
而栈的默认内存空间为1M左右,所以会导致内存溢出
解决这个问题,可以将数组申明在全局存储区或堆上即可
方法一:申明为全局变量

方法二:存放在堆上

方法一:申明为全局变量

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include<iostream>
#include<algorithm>
using  namespace  std;
int  list[1000000]; //全局变量
int  main(){
     int  a,b;
     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;
}

方法二:存放在堆上

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include<iostream>
#include<algorithm>
using  namespace  std;
int  main(){
     int  a,b,*list;
     //int list[1000000];
     list =  new  int [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;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值