对于这种情况 你需要把数组分开来存不要定义在一起。数组在分配时是连续空间分配,你这么大时根本无法满足的 建议你这样定义把数组分开定义 采用统一的函数接口进行操作 double dis(x,y,z);
错误的做法:局部变量 当我们把数组定义为全局变量时,数组大于10^6仍然可以正常地运行 正确的做法:全局变量 参考链接:https://blog.csdn.net/qq_46527915/article/details/114544314
要解决这个问题,有两种方式:1 将数组定义为全局变量。全局变量分配时,会分配在全局变量空间,不受栈空间大小影响。这种方法的好处是,代码简单,只需要将定义从函数内移动到函数外即可,其它不需要改变。缺点是,在程序运行全程均需要占用该部分内存,很多时候这是一种浪费。2 使用动态内存空间。通过mall...
可以用long类型,在不够就用double储存整型数,要是还不够就用字符串(字符数组)存。定义一个char str[1000],就能存1000位了。
如果第1条不能解决,也就是最坏的情况,那么建议:做一个转换器,把原始文件转换成便于操作的文件再进行处理。所谓便于操作,就是说,每一行数据的大小固定,因而可以对数据进行快速访问。转一行存一行,不会花太多内在。需要一定的转换时间,但是因为可以预估,所以界面上可以做一个转换进度来降低用户的...
把各个位分解出来后。可以把数保存在一个整型数组里比如a[100],哪么a[99]就表示100位上的数值,a[0]表示个位数字,比如100位上是5,个位上是4,其他都是0的话就写成这样了 500000···00004 然后和另外的一个数组b[100]各个位相加。保存到数组中,用for循环打印出各个位显示出数值。本人的一...
参见有没有介绍C++2023最新国际标准的教材?,你可以使用二进制文件代替文本文件,可以将将整个数组matrix...
估计你把数组定义为局部变量了,局部变量是放在内存栈中的,而内存栈只有1M空间,数组太大了是放不下的。float *a=(float *)malloc(sizeof(float)*1000000);你试试会不会出错。
如果数组你直接存储全部数据,也太大了点。建议看你的数据在哪里存储的,分批读取。比如是文件的话,你可以设置数组大小1000,然后分批读取,直到文件结尾。其他的也类似,都可以判断数据是否读取完毕了。