当前位置:首页 » 编程语言 » c语言数组太大怎么解决
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

c语言数组太大怎么解决

发布时间: 2022-10-09 15:43:37

A. c语言 数组太大

1000*(1000*30),三千万的数组,定义了好几个,真心不懂为何要这么大的数组?

B. c语言里面数组过大如何处理

写入文件吧,一般是申请不到那么大的内存,就是能够申请到内存,也是用虚拟内存,也会交换到硬盘

可以开辟一块内存空间512M的空间当CACHE,如果这样的话,会快一点。

C. 如何在C语言中解决因为数组长度开的过大而运行不了的原因

开那么多干嘛,栈空间没多少给你用的?用指针吧,用多少申请多少。另外看你是在什么情况下申请的数组空间。如果非要用数组,考虑下是否可以循环使用

D. C语言结构体数组为什么会过大(我都只开了2个!!)

“Image”就是指编译后的程序文件,在对程序链接时就是程序在内存时的映像,因此这
么称呼。
在某些操作系统下,这种程序文件可以直接作为内存映像载入内存。
在其他操作系统中,这些文件的结构比较复杂,不仅仅是内存映像那么简单,可能包含
定位信息、和程序代码有关的外部符号信息等(就像咱们用的MS Windwos)。
Windows95 和 SP3 之前的 WindowsNT 4.0 无法处理超过256MB的可执行文件(就是无法
执行),后续版本可以处理的最大范围约 1.75GB,如果显示的文件大小是负数,表示文
件超过了 2GB,需要用64位的处理器和操作系统或者减小数组大小。
在现在的Windows操作系统中,一般可以忽略上述警告,程序可以直接运行而不会出现问
题。
网络来的两个方法,没试。
1)好好利用公共模块mola,数组最好用动态的,用完就释放;
2)把虚拟内存搞大一些就没关系。

E. 请问C语言中大数组如何处理

你仔细看看这些数据都是有规律的,有相当大的一部分都是0 1 2 3 4 5 6 13重复了很多次。统计一下这些循环出现了多少次,如果考虑这个因素,压缩还是可以的。
否则的话,所有的数据都是0-15区间的整数,即使考虑使用4位二进制压缩,1个字节(8 bit)可以存2个整数,41502个数也需要20K byte,已经超过内存上限了...
如果数据没有规律,而且实在要压缩的话,考虑用霍夫曼编码可能好一些,不过我估计也挺悬的。可以考虑其他方式,不要保存在内存中,程序运行时需要哪一部分数据再读进来。

F. C语言快速读取超大数组的问题

关键不在于你要把它读进去。
而在于:
1.文件哪来的,有办法不用那么大的文件么?建立文件的时候不能建立一个索引么?或者用一个便于访问的格式么?
2.文件要用来干什么?CPU一次只能处理几个字节,你为什么要把它全读到内存里呢?

如果第1条不能解决,也就是最坏的情况,那么建议:
做一个转换器,把原始文件转换成便于操作的文件再进行处理。所谓便于操作,就是说,每一行数据的大小固定,因而可以对数据进行快速访问。转一行存一行,不会花太多内在。需要一定的转换时间,但是因为可以预估,所以界面上可以做一个转换进度来降低用户的主观等待时间。

PS:至于你是把转换后的数据存到文件进行访问,还是用映射的方式把文件映射到内存来读写,实质上差不多,不过后者可能有系统提供的缓存机制来提高效率。但是本质上一样的:转换成临时文件、使用;或者干脆就是用专门的程序转换出新文件,再用处理程序去处理。看场合了。

如果你的文件是存储在顺序存储器中,比如磁带上:
那么差不多意思,想办法把数据转存到你的磁盘上,然后再进行随机访问。

补充::::关于内存映射:见上面的PS内容,先把文件转成可随机访问格式(比如我说要哪一行数据,你就立刻能找到/算出,而不是从头一行一行去找),然后再做内存映射。
另外,Windows下和Linux下的内存映射有所不同,但是基本上不难,可以直接搜索找到照搬。

G. c语言里面数组过大如何处理

为什么定义这么大呢???
建议动态分配吧,不是一次性,而是根据需要分配。一个节点一个节点的申请内存。
文件操作的话,fread
可以指定文件指针位置,取出指定位置的数据。

H. c语言中数组过大怎么办 double dis[5001][256][256]

你这个应该因为过大 无法分配足够空间导致 这个数组大小为5001*256*256*8=2500.5M bytes 一般的电脑里面根本没有这么大的连续空间,而且操作系统对这么大的文件也不支持。

对于这种情况 你需要把数组分开来存不要定义在一起。数组在分配时是连续空间分配,你这么大时根本无法满足的

建议你这样定义把数组分开定义 采用统一的函数接口进行操作

double dis(x,y,z);

I. C语言定义数组,内容太长,怎么办啊

可以动态开辟空间,malloc 然后用想干函数将不用的空间去掉