在 Nim 中创建对数组的引用
create a reference to an array in 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 中,如何传递对数组的引用而不是按值传递?到目前为止,请参阅上面的代码。
在 Nim 中,ref
s 在堆上,必须用 new
分配。您不能只将堆栈数组用作 ref
,因为那样是不安全的:当数组从堆栈中消失时,ref
指向一些错误的内存。相反,您有两个选择:您可以改用不安全的 ptr
s。除了 ref
s 之外,它们不会被垃圾收集,可用于不安全的东西。或者,您可以直接将 b
设为 ref array
。
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 中,如何传递对数组的引用而不是按值传递?到目前为止,请参阅上面的代码。
在 Nim 中,ref
s 在堆上,必须用 new
分配。您不能只将堆栈数组用作 ref
,因为那样是不安全的:当数组从堆栈中消失时,ref
指向一些错误的内存。相反,您有两个选择:您可以改用不安全的 ptr
s。除了 ref
s 之外,它们不会被垃圾收集,可用于不安全的东西。或者,您可以直接将 b
设为 ref array
。