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...