数组是否以所有语言连续存储?

时间:2014-12-19 00:10:11

标签: arrays programming-languages

我最近在阅读一篇关于连续存储数组数据(特别是在Go中)的博客,但我的理解是,根据定义,数组数据是连续存储的。至少这是我所有算法和数据结构的研究让我相信的。

所以我的问题是,数组数据是否在所有编程语言中连续存储?而且,特别是我想谈论像整数这样的原语(或者在Java的情况下,我可以拥有一个对象数组,是对在内存中连续存储的对象的引用?我知道对象本身可以在任何地方)。 / p>

2 个答案:

答案 0 :(得分:3)

这取决于你定义为"数组"在语言上,尽管数组的传统含义与连续元素放置有关。

例如,在JavaScript中,数组实际上是哈希表,这意味着数据不会连续存储,而是基于其索引键(使用哈希函数)进行哈希处理,以将值存储在不同的地址中(质疑here),这只是一个例子(事实上,我认为在动态语言中,将数组作为哈希表是一种常见现象。)

我想这个用 no 回答你的问题。

答案 1 :(得分:0)

通常这低于语言抽象级别,所以没有明确的要求。但是由于性能的原因,任何现实生活中的实现都可能会(通过舍入到字大小)。它当然指的是虚拟内存,因为内核可以提供程序本身看作连续的非连续空间