阵列太大了吗?

Gle*_*rse 9 delphi delphi-xe2 firemonkey

目前我有一个TCube阵列

CreateCube : array[1..1000] of tcube;
Run Code Online (Sandbox Code Playgroud)

目前使用它们作为地图,因此您可能有30个立方体宽,20个立方体高,从而形成一个大网格.但是1000个立方体并不足以满足我的需要,我需要更多像10,000个立方体.

有这样大小的阵列会导致问题吗?还有其他选择吗?

Dav*_*nan 16

大型数组有两个主要方案存在问题:

  1. 该数组非常大,不适合连续的内存块.如果数组保存引用而不是值,那么您可能有足够的内存用于数组,但内存不足以引用所引用的对象.
  2. 该数组被声明为局部变量并导致堆栈溢出.避免该问题的方法是将数组移动到堆上.在Delphi中,最简洁的方法是使数组成为动态数组.即使您在编译时知道维度,也可以使用动态数组将存储从堆栈移到堆上.


nul*_*ptr 5

数组可以与内存允许的一样大.但是如果它是一个局部变量,或者你将它按值传递给某个方法,那么请注意,你可以很容易地从堆栈中解脱出来.