[問題] 記憶體問題

看板C_and_CPP (C/C++)作者 (huss)時間14年前 (2011/10/18 11:57), 編輯推噓5(5016)
留言21則, 7人參與, 最新討論串2/2 (看更多)
不好意思 想請教一個記憶體問題 因為要測試用的 如果我今天想要拿走100MB 的記憶體 可是我寫程式去跑 一個process 一次最多好像只能拿 16MB 例 #define MB 1048576 int *P[MAX]; int n=0; for (i=0;i<=100;i++) P[n] = (int*) malloc(MB); 可是最後觀察記憶體的結果 如果超過還是只讓你獲取 16 所以是不是要用 多個 process 去跑 才能跟電腦要到這麼多的記憶體 謝謝各位 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 114.34.220.210

10/18 12:11, , 1F
看你跑程式的作業系統有沒有額外限制
10/18 12:11, 1F

10/18 12:29, , 2F
不對,如上所說,要看os,但即使開了multi-process應也沒
10/18 12:29, 2F

10/18 12:29, , 3F
太大改善,xp你可試試寫一次配1G size,assign,print,
10/18 12:29, 3F

10/18 12:30, , 4F
生成後再同時執行10個相同exe,會發現一現象,total 4GB
10/18 12:30, 4F

10/18 12:31, , 5F
時,其它的應用程式會要不到記憶體(觀查工作管理員即可)
10/18 12:31, 5F

10/18 12:31, , 6F
全部都在等那些被佔用的記憶體被放出來!資源饋乏問題.
10/18 12:31, 6F

10/18 12:32, , 7F
我比較好奇,你是怎麼得到16MB這個數字?
10/18 12:32, 7F

10/18 12:33, , 8F
它應是在malloc過程,判斷 P[n] 是否為 NULL 去推的.
10/18 12:33, 8F

10/18 12:34, , 9F
^ 他
10/18 12:34, 9F

10/18 12:37, , 10F
http://ppt.cc/E3NA 我的程式這樣就可以拿到100MB
10/18 12:37, 10F

10/18 12:40, , 11F
現代什麼 os 只能拿 16M 我也蠻好奇的..
10/18 12:40, 11F

10/18 12:42, , 12F
如果只有malloc而沒有做任何存取,可能不會真的配置空間
10/18 12:42, 12F

10/18 12:43, , 13F
可能有用ulimit之類的限制住
10/18 12:43, 13F

10/18 12:48, , 14F
shadow0326 沒提我真沒想過這情況。
10/18 12:48, 14F

10/18 12:51, , 15F
我記得vs有限制.gcc也有限制.但是比較寬鬆.
10/18 12:51, 15F

10/18 12:51, , 16F
我大概知道了 謝謝各位的說明
10/18 12:51, 16F

10/18 12:53, , 17F
malloc 以後並沒有馬上吃啊 ... 你至少在尾端寫個 0 OS才
10/18 12:53, 17F

10/18 12:54, , 18F
有動作吧。
10/18 12:54, 18F

10/18 12:54, , 19F
對喔,寫個0就好,我幹嘛把100MB全部填滿...XD
10/18 12:54, 19F

10/18 13:05, , 20F
下次記得用memset
10/18 13:05, 20F

10/18 19:10, , 21F
你可以從作業系統設定每個行程的記憶體最大值
10/18 19:10, 21F
文章代碼(AID): #1EdFag7B (C_and_CPP)
討論串 (同標題文章)
文章代碼(AID): #1EdFag7B (C_and_CPP)