[問題] 關於陣列過大的問題

看板C_and_CPP (C/C++)作者 (Arim5566)時間16年前 (2010/02/05 16:26), 編輯推噓2(204)
留言6則, 4人參與, 最新討論串1/1
( *[1m *[m 為色碼,可以按 Ctrl+V 預覽會顯示的顏色 ) ( 未必需要依照此格式,文章條理清楚即可 ) 遇到的問題: (題意請描述清楚)陣列過大 希望得到的正確結果: 程式跑出來的錯誤結果:造成stack overflow 程式強制關閉 開發平台: (例: VC++ or gcc/g++ or Dev-C++, Windows or Linux) Dev-C++ WINXP 有問題的code: (請善用置底文標色功能) int **high; high=new int*[50000]; for(int i=0;i<50000;i++) { high[i]=new int[50000]; } 補充說明: 到今天才知道陣列過大會造成所謂的stack overflow,爬了一下google的文章 說明只要是用一般在local宣告的變數,記憶體會被分配在stack區段,然後用 dynamic方法的話記憶體會被分配在heap區段,而heap沒有stack的大小限制 可是我上面已經動態宣告二維陣列,可是執行的時候程式還是強制關閉了 請問這是什麼樣的情況呢?? -- ~宅男的四個徵兆~ ∠□ ○ ! * \○/ ★    (○ ? ╦╦└□ " ○□═ □   □> ║║√√ ╦══╦ ∥    |\ 一回家就上PTT 每天想正妹 以當好人為樂 忘記正妹虧欠自己 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 218.169.102.169

02/05 16:31, , 1F
基本上電腦的東西都有限制 50000*50000*4 = 10GB
02/05 16:31, 1F

02/05 16:31, , 2F
肯定不能跑 要改你的演算法
02/05 16:31, 2F

02/05 16:35, , 3F
插個12或16G Ram然後用64 bit OS.... (大誤XD)
02/05 16:35, 3F

02/05 16:37, , 4F
看來只好用sparse matrices了冏
02/05 16:37, 4F

02/06 21:41, , 5F
64 bit OS? 型別int的大小會不會變阿... 說不定會變20G..
02/06 21:41, 5F

02/06 22:14, , 6F
就說大誤了嘛XD 不然64 bit OS但是用int32啊XDDD
02/06 22:14, 6F
文章代碼(AID): #1BQzOT4d (C_and_CPP)
文章代碼(AID): #1BQzOT4d (C_and_CPP)