[問題] 資料筆數超過65536個 該怎麼辦?

看板C_and_CPP作者 (呼嚕呼嚕啦啦啦)時間16年前 (2010/02/22 15:36), 編輯推噓9(9015)
留言24則, 9人參與, 最新討論串1/1
大家好 小弟遇到個棘手的問題 望板上能者協助 萬分感激 遇到的問題: (題意請描述清楚) 程式主要在做遞迴運算 可是資料筆數過大(運算內容如補充) ex array只能令到65536個 資料卻要用到8萬多個 試過array[90000] 或切割成array1[45000]、array2[45000] 或是使用陣列 det[300][300] 都不行 希望得到的正確結果: 可以處理至少九萬筆資料 程式跑出來的錯誤結果: An Access Violation (Segmentation Fault) raised in your program. 開發平台: (例: VC++ or gcc/g++ or Dev-C++, Windows or Linux) Dev-C++ 4.9.9.2 有問題的code: (請善用置底文標色功能) 補充說明: 遞迴運算的內容如下 例如array[90000] , temp[90000] , a , b 每次運算 1.array先複製到temp 2.array每筆資料乘a 3.temp每個資料都平移b格 (例如temp[1]的資料,移到temp[1+b]) 超過90000的 都加到第90000格 4.temp每筆資料乘b 5.array和temp每筆對應位置的資料相加 ( array[1] = array[1] + temp[1] ) 要重複運算一百多次(也就是a和b有一百多組) 因為有如上述的平移相加關係 所以無法將資料分群處理 希望可以得到解決辦法 萬分感激 -- -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.135.12.152

02/22 15:51, , 1F
linklist 試過嗎? 我只知道這種麻煩的方法
02/22 15:51, 1F

02/22 15:52, , 2F
假設你的資料用double存, 一個佔8 bytes, 這樣宣告array
02/22 15:52, 2F

02/22 15:52, , 3F
大概stack炸了, 改用malloc / new的方式要記憶體試試.
02/22 15:52, 3F

02/22 15:53, , 4F
全域變數/動態配置/換電腦
02/22 15:53, 4F

02/22 16:20, , 5F
你需要資料庫
02/22 16:20, 5F

02/22 16:27, , 6F
九萬個 double 也才 720k 唷...你可能是其它地方有 bug
02/22 16:27, 6F

02/22 16:30, , 7F
不如貼code, 90000x1的數組很小了
02/22 16:30, 7F

02/22 16:36, , 8F
他要兩個90000筆的array啊, 兩個剛好會過1MB, 以VC預設
02/22 16:36, 8F

02/22 16:36, , 9F
的stack size來說就剛好爆了; 像他開65536x2的話則略剛
02/22 16:36, 9F

02/22 16:37, , 10F
好在1MB內; 只是DevC++的話, 就不確定預設stack size了
02/22 16:37, 10F


02/22 16:43, , 12F
stack_size.txt // 想硬改stack size的話剛goo到這個XD
02/22 16:43, 12F

02/22 17:36, , 13F
感激不盡 趕緊來試試 試過再來回報 ^^
02/22 17:36, 13F

02/22 20:09, , 14F
改善算法不知道會不會比較好...
02/22 20:09, 14F

02/22 20:12, , 15F
要不要考慮把code貼上來?
02/22 20:12, 15F

02/22 20:13, , 16F
其實可以生個 arr[1XX][90000]的全域陣列 前面的index
02/22 20:13, 16F

02/22 20:14, , 17F
用遞迴的深度表示這樣~
02/22 20:14, 17F

02/22 20:50, , 18F
你放在stack裡? 這樣的話當然會炸
02/22 20:50, 18F

02/22 20:50, , 19F
改用malloc放heap裡
02/22 20:50, 19F

02/23 09:43, , 20F
好的 小弟再來試試 感謝 ^^
02/23 09:43, 20F

02/23 15:35, , 21F
感謝大家的幫忙 用S大的方法可解決 謝謝
02/23 15:35, 21F

02/23 16:11, , 22F
這個我不是2F就推過了嗎~_~
02/23 16:11, 22F

02/24 11:21, , 23F
V大抱歉 只注意到您貼的連結 那個方法還是不能用
02/24 11:21, 23F

02/24 11:23, , 24F
小弟只先試了連結 再回來看才又試了動態配 再次感謝
02/24 11:23, 24F
文章代碼(AID): #1BWZG93D (C_and_CPP)