Arrays 为什么要使用固定长度的数组而不是可变长度的数据结构来实现堆栈?

Arrays 为什么要使用固定长度的数组而不是可变长度的数据结构来实现堆栈?,arrays,data-structures,stack,fixed,Arrays,Data Structures,Stack,Fixed,我知道如何实现这两者,但是我想知道基于固定长度数组的堆栈的用途。是否存在不希望堆栈增长超过X的情况?如果您有选择,通常您会这样做以使其更快 根据您的编程语言,可以提供更多信息,但通常优势在于速度。通过使用固定大小,保留内存块的大小不再需要与任何更改混淆。您的内存可能会变得支离破碎(因此,您的一小部分数据在这里,一小部分在那里,每次更改阵列时,情况可能会变得更糟。)因此,使用固定大小将使所有数据保持在一个位置 许多语言都有垃圾收集例程,例如Javascript,如果您正在创建一些平滑、实时的东西,

我知道如何实现这两者,但是我想知道基于固定长度数组的堆栈的用途。是否存在不希望堆栈增长超过X的情况?

如果您有选择,通常您会这样做以使其更快

根据您的编程语言,可以提供更多信息,但通常优势在于速度。通过使用固定大小,保留内存块的大小不再需要与任何更改混淆。您的内存可能会变得支离破碎(因此,您的一小部分数据在这里,一小部分在那里,每次更改阵列时,情况可能会变得更糟。)因此,使用固定大小将使所有数据保持在一个位置

许多语言都有垃圾收集例程,例如Javascript,如果您正在创建一些平滑、实时的东西,比如视频游戏,您可能希望使用固定的大小,因为这样当垃圾收集开始时,它不会每隔几秒钟停止一次。在Javascript的情况下,还可以静态地键入数组,这意味着虚拟机不再需要推断变量的类型并检查是否需要转换

如果你在C或C++中编程,从文件读取的典型过程(即加载一个图像)将检查你要加载到内存中的文件的大小,然后动态地分配你需要的内存大小。


推荐阅读:这将教你关于内存碎片和垃圾收集的知识。在这里获得的见解适用于许多其他语言。(例如Node、PHP、ActionScript、Ruby等)

其中一个可以是滚动队列或环形缓冲区,这意味着最多记录最后N个数据点。这对于记录移动平均值非常有用,例如最近N秒的平均延迟。重新使用相同的数组元素,只需移动开始和结束元素,就可以减少垃圾收集,而不是删除结束元素。

有没有想到任何特定的编程语言?没有,我在堆栈上读了一些文章后发现了这一点,但在网上找不到任何使用它的答案。我对这一点被否决感到有点困惑,有人得到解释吗?谢谢,这也很高兴知道,@NextLocal更详细了一点。