你确定你要开这么大的数组?你的内存够用吗?1e31
是一个double
类型,表示1x10^31,是1后面有31个零,你用一个整型存储这么大的数?不溢出才怪。你还要开这么大的数组?就是把全世界的内存借给你用都不够。
也许你想要的是2^31,这也是一个很大的数。如果你要开辟这么大的整型数组,所需的内存大小至少为2^31*4=8GB。
当程序需要使用比如2GB~1TB左右的存储时,最简单的办法恐怕得是用文件读写模拟内存读写了吧。windows参考_fseeki64函数,linux参考fseeko64函数。
FILE *fA;fA=fopen("A","rb+");_fseeki64(fA,10000000000i64*sizeof(int),SEEK_SET);fputc(fA,0);//int A[10000000000];
int B;
_fseeki64(fA,9999999999i64*sizeof(int),SEEK_SET);fread(&B,1,sizeof(int),fA);//B=A[9999999999];
_fseeki64(fA,9999999999i64*sizeof(int),SEEK_SET);fwrite(&B,1,sizeof(int),fA);//A[9999999999]=B;
fclose(fA);