看板 C_and_CPP 關於我們 聯絡資訊
已爬文 所以總結一下: 實體記憶體位置,還是由OS在分配控制, 而程式編譯器只能算是ask或取得虛擬addr,但未必是連續的! 這樣對嗎? 那萬一程式故意對記憶體request爆量, OS也會自動做pagefile或什麼的(也就是把硬碟當做快取記憶體來操), 這樣對嗎? -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 36.237.125.172 ※ 文章網址: http://www.ptt.cc/bbs/C_and_CPP/M.1414924251.A.0A9.html
jacky1989: 1.不一定連續 2.我試過,記憶體用量會達100%,然後會頓 11/03 18:31
dirkc: 不確定你說「連續」的意思;paging本來多數的OS都會做,是實 11/03 22:22
dirkc: 現虛擬記憶體的方式,但new或malloc內部還先有一層管理,然後 11/03 22:25
dirkc: 才到OS;另外我對"實體"兩字老是想到MMU看到的physical位址 11/03 22:27
LPH66: 應該這麼說: OS 負責把這些在實體上可能是零散的空間整理成 11/03 22:51
LPH66: 虛擬位址空間中的「連續」位址 11/03 22:51
LPH66: 至於這些實體空間到底是在記憶體的何處抑或是磁碟的何處 11/03 22:52
LPH66: 都只要 OS 知道就好, 應用程式不需要處理這種細節 11/03 22:52
LPH66: new / malloc 則又是蓋在虛擬位址空間上的記憶體管理 11/03 22:53