在Nim中创建对数组的引用

时间:2015-06-01 22:08:37

标签: arrays pointers reference nim

var b: array[5, int]

type
    ArrRef = ref array[5, int]

var c : ArrRef
echo repr(c) # nil
c = addr b # doesn't compile, says type is Array constructor, expected reference

在Nim中,如何将引用传递给数组而不是传递值?到目前为止,请参阅上面的代码。

1 个答案:

答案 0 :(得分:9)

在Nim ref中,它们位于堆上,必须使用new进行分配。你不能只使用堆栈数组作为ref因为那是不安全的:当数组从堆栈中消失时,ref指向一些错误的内存。相反,您有两种选择:您可以使用不安全的ptr代替。除了ref之外,它们不是垃圾收集的,可以用于不安全的东西。或者,您可以直接b ref array