2011-10-19 52 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会给你在虚拟地址空间连续的内存。如果你知道虚拟内存是如何工作的,你就知道虚拟页面在物理上是连续的并不能保证。