数组在*物理*内存中是连续的吗?

我知道数组元素在虚拟内存中肯定是连续的,但是它们在物理内存方面是这样的吗?

#define N 100*1024*1024
int arr[N];

请注意,到目前为止,你们中的大多数人都说答案是否定的,但我的主要问题仍然是下面以粗体显示的问题。


如果没有,至少如果在页面中找到一个元素,那么我是否可以假设整个页面都填充了数组元素(换句话说,它们可能不是在不同页面中连续的,而是在每个单页中连续的,从而提高性能读取 1 个元素,我们读取附近元素的整页,即 4096 字节,而不是读取下一个元素的另一页)?

如果是,如果我尝试分配一个没有可用连续物理内存的大数组怎么办(我相信这可能会发生很多)?

如果答案取决于我对 C 和 C++ 感兴趣的编程语言,如果它取决于我对 linux 感兴趣的操作系统及其变体,例如 ubuntu

以上是数组在*物理*内存中是连续的吗?的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>