未检查数组

UncheckedArray[T] 类型是一种特殊的 数组 ,编译器不检查它的边界。 这对于实现定制灵活大小的数组通常很有用。 另外,未检查数组转换为不确定大小的C数组:

  1. type
  2. MySeq = object
  3. len, cap: int
  4. data: UncheckedArray[int]

大致生成C代码:

  1. typedef struct {
  2. NI len;
  3. NI cap;
  4. NI data[];
  5. } MySeq;

未检查数组的基本类型可能不包含任何GC内存,但目前尚未检查。

未来方向: 应该在未经检查的数组中允许GC内存,并且应该有一个关于GC如何确定数组的运行时大小的显式注释。