當前位置:首頁 » 編程語言 » 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 然後用想干函數將不用的空間去掉