2011-10-19 77 views
1

malloc分配的內存可能佔用多個頁面,而這些頁面並不一定相鄰,這是正確的嗎?malloc分配的內存不一定是物理連續的嗎?

+0

請參閱http://stackoverflow.com/questions/625270/does-malloc-allocate-a-contiguous-block-of-memory。 –

+0

根據[http://stackoverflow.com/questions/625270/does-malloc-allocate-a-contiguous-block-of-memory][1],是的,它總是連續的。 [1]:http://stackoverflow.com/questions/625270/does-malloc-allocate-a-contiguous-block-of-memory –

+1

@Drew:單詞 「物理」 是從顯眼該問題,並影響答案。 –

回答

3

這是正確的。

物理上連續的內存只對DMA很重要,你不關心,因爲你不在內核空間。

它將在虛擬地址空間中連續。

3

是的,它們在物理上不能保證相鄰,但至少在過程的虛擬地址空間中它們看起來是。

在用戶空間中,您幾乎不必考慮物理內存和連續頁面。

1

malloc會給你在虛擬地址空間連續的內存。如果你知道虛擬內存是如何工作的,你就知道虛擬頁面在物理上是連續的並不能保證。