char陣列最大長度

2021-06-20 14:58:12 字數 888 閱讀 6029

q: 請問char陣列最大能多少?是否無法超過1024?

我指定char   test[300*1024]的時候沒有任何問題,而char   test[1024*1024]就會出錯,是否char無法超過1024*1024?  

因為我需要在程式執行中,讀取乙個檔案到記憶體,而檔案大小不固定,大多數時候超不過300k,但是考慮到萬一超過300k的情況,所以希望設定大一點。 

a1: 

需要更大的記憶體空間,可以使用動態記憶體分配,最大不超過2g(看你的機子記憶體而定)  ,可以用new   或   malloc  

a2:只要棧的剩餘空間大於所申請空間,系統將為程式提供記憶體,否則將報異常提示棧溢位   

在windows下,棧是向低位址擴充套件的資料結構,是一塊連續的記憶體的區域。這句話的意思是棧頂的位址和棧的最大容量是系統預先規定好的,在windows下,棧的大小是2m(也有的說是1m,總之是乙個編譯時就確定的常數),如果申請的空間超過棧的剩餘空間時,將提示overflow。因此,能從棧獲得的空間較小。 so.綜上。bomb....棧暴了。。。

a3:在vc中棧的預設值為1m,所以當你分配1024*1024個char後,棧就溢位了。讀取檔案時,一般來說不會全部讀入,唯讀要用的部份,如果必須全部讀入,大多數使用堆上記憶體。如果確有需要,在vc中是可以調整棧記憶體的大小,選項是/statck.  

a4:實用共享記憶體檔案影射方式,unix上可以處理幾十個g的資料,在pc機上沒試過   

另外,建議修改程式結構,不要因為程式的原因影響應用功能。

a5:學習!如果是需要   超過實際記憶體空間的大小,那還是申請硬碟空間好了.   

最好自己做個虛擬記憶體,頁交換,表交換什麼的...這樣子過不了多少時間,可以搞個os來了...   

發達了...

a6:

陣列中子陣列等於k的最大長度

假定有陣列arr 4 求出陣列中子陣列中等於12的最大長度。建立乙個hash表,其key等於陣列中遍歷過的數的和,其value等於當前遍歷的數在陣列中的下標。用sum儲存遍歷過的數的總和,len儲存最大長度 依次從陣列的開頭遍歷,如果sum k的值在hash表中有記錄,則len更新為i map su...

char陣列和char指標

在c c 中,指標和陣列在很多地方可以互換使用,這使得我們產生一種錯覺,感覺陣列和指標兩者是完全等價的,事實上陣列和指標是有很大的區別的。1.兩者在含義上的區別。陣列對應著一塊記憶體區域,而指標是指向一塊記憶體區域。其位址和容量在生命期裡不會改變,只有陣列的內容可以改變 而指標卻不同,它指向的記憶體...

char陣列與char指標

1 以字串形式出現的,編譯器會在結尾自動新增 0,思考,為什麼?存在的c語言方法,如strlen s 計算字串的長度,其中s指標。strlen要計算字串長度,必須知道 是結尾,因此使用 0表示結尾。只有字元陣列才有 0的概念,其它型別 int 的陣列沒有這個概念。因為其他型別的陣列或者指標,沒有st...