Malloc從稱爲堆的進程的虛擬內存區域之一分配內存。 堆的初始大小是什麼(在執行開始之後和任何malloc調用之前)?說,如果堆從X虛擬地址開始,並結束於Y虛擬地址我想知道X和Y之間的區別。物理頁面在malloc和免費通話期間如何分配和釋放?
我已閱讀前面詢問的重複問題的答案。
書面答覆是所有虛擬地址的情況下,但我想知道的物理頁是如何分配的。 我不確定,但我認爲這個初始大小(X-Y)在操作系統中沒有相應的頁表項。如果我錯了,請糾正我。
現在,假設有一個請求分配(和使用)10個字節的內存,一個新的頁面將被分配。那麼,從這個頁面或每次分配一個新頁面時,所有對內存的進一步請求都會得到滿足?誰來決定呢?
當內存將被釋放(使用免費()),那麼在什麼時候這個分配的物理頁面將被釋放並標記爲可用?我知道虛擬地址和物理頁面不會立即釋放,因爲釋放的內存量可能會非常少。那麼在什麼時候物理地址和虛擬地址之間的對應關聯會被終止?
如果我的問題聽起來很奇怪,那麼我很抱歉。我只是一個新手,並試圖理解內部。
請更改您的標題以反映您問題的具體情況。 – 2010-11-01 15:50:46