亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

C+中是否存在最大數組長度限制?

C+中是否存在最大數組長度限制?

C++
撒科打諢 2019-07-04 15:00:23
C+中是否存在最大數組長度限制?C+中的數組有最大長度嗎?是C+限制還是依賴于我的機器?可以調整嗎?它是否取決于數組的類型?我能以某種方式打破這個限制嗎?還是我必須尋找一種更好的存儲信息的方法?最簡單的方法應該是什么?我要做的是在數組上存儲長int,我正在Linux環境中工作。我的問題是:如果我需要存儲N>10位數的N個長整數數組,該怎么辦?我需要這樣做,因為我正在為學校編寫一些密碼算法(例如p-Pollard),并撞上了整數和數組表示長度的墻。
查看完整描述

3 回答

?
胡說叔叔

TA貢獻1804條經驗 獲得超8個贊

從實際而非理論的角度來看,在32位Windows系統上,單個進程的最大可用內存總量為2GB。您可以通過使用具有更多物理內存的64位操作系統來打破限制,但是這樣做還是尋找替代方案在很大程度上取決于您的預期用戶和他們的預算。您還可以使用PAE.

數組的類型非常重要,因為許多編譯器的默認結構對齊是8字節,如果內存使用是一個問題,這是非常浪費的。如果您正在使用VisualC+來鎖定Windows,請查看#語用包指令是克服這一問題的一種方法。

另一件事是看看內存壓縮技術對你有什么幫助,比如稀疏矩陣,動態壓縮等等.同樣,這是高度依賴于應用程序的。如果你編輯你的帖子,提供更多關于數組中實際內容的信息,你可能會得到更多有用的答案。

編輯:給出關于您的確切需求的更多信息,您的存儲需求似乎在7.6GB到76 GB之間未壓縮,這將需要一個相當昂貴的64位框才能在C+中作為一個數組存儲在內存中。這引發了一個問題:為什么要將數據存儲在內存中,在內存中假定訪問速度,并允許隨機訪問。將這些數據存儲在數組之外的最佳方法基本上是基于您想要訪問它的方式。如果您需要隨機訪問數組成員,那么對于大多數應用程序來說,通常都有對數據塊進行分組的方法,這些數據塊往往同時被訪問。例如,在大型地理信息系統和空間數據庫中,數據往往是按地理區域平鋪的。在C+編程術語中,您可以重寫[]數組操作符,以便根據需要從外部存儲中獲取數據的一部分。


查看完整回答
反對 回復 2019-07-04
  • 3 回答
  • 0 關注
  • 1164 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號