我有关于数组和链表的概念性问题。数组和链接列表:如果512 MB空闲,但是300 MB空间不连续,阵列是否能够在内存中分配300MB
数组是连续的记忆块。
假设一个系统有1024个单位的内存。 512个单位被占用(系统+其他)。
我们的过程需要300个单位。
在内存中有512个单元可用时,最大的连续块是200单元。因此,可以有1个200个单元的块,3个100个块。
- 在诸如Java的语言中的数组分配会发生什么。在C中,malloc将会失败?
如果底层的数据结构是链接列表,它应该能够轻松地处理非连续性(我在这个假设中是否正确)?
操作系统会“碎片整理”内存或任何相当的?
通过记忆,我的意思是RAM。不是硬盘。
这取决于你所说的“记忆”。如果它是*物理*内存碎片,操作系统提供的虚拟内存系统应该隐藏它。 –
我想我的意思是,*物理内存*。虚拟内存也基于磁盘进行抽象。所以要了解它,我想知道会发生什么。它是否将内存内容写入磁盘,然后再次加载它们,但会创建一个300个单元的连续块? – Nasir
操作系统永远不会对内存进行碎片整理。它支持虚拟内存,从不担心这样的问题。 –