关于C语言开大数组溢出的问题

       上周的CCF/CSP认证成绩出来了,第四题用粗暴的Dijkstra的思想强行遍历,本来估计能拿个60分,结果爆0分,耿耿于怀。

       我考试用的是C++。

#include<iostream>
using namespace std;
int main()
{
    int dis[8000][8000];
    //代码
}

       没记错的话,当时是因为像上面代码一样在main函数里面开了个8000*8000的数组(这道题用Vector来模拟链表确实是很省空间的做法,但既然用了O(n^2)的算法,就不指望能过60分以后的数据了,还有,这篇文章的重心不在怎么解题,所以我就不放题目了),结果DEV-CPP编译每次都报溢出,我就想着估计是DEV-CPP的问题吧,毕竟我平时用的都是CodeBlocks。当时还仔细算了下:

       8000*8000*4/1024/1024≈244 MB.

       8192*8192*4/1024/1024≈256 MB.

       题目给了256MB的内存,能开8192*8192的数组,只开8000*8000怎么样都不应该爆空间吧。于是开着100*100的小数组,将各种可能的样例测试通过后,我就提交了代码,提交前刻意把100*100的改回8000*8000,想尽可能地蹭分。

       结果——这道题0分了。


       我不服,于是我用CodeBlocks将代码重新敲了一遍……呐,结果如下,看来不是代码编辑器配置的问题了。


      

评论 20
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值