Nimのポインタ型
pointer, ptr, refの3種類がある
pointer
アドレスを扱う型
code:nim
var
num: int = 100
num_ptr: pointer = num.addr
echo repr(num_ptr) # 0x1093b9430
ptr[T]
T型のアドレスを扱う型
安全ではない
code:nim
var
num: int = 100
num_ptr: ptr int = num.addr
echo repr(num_ptr) # ref 0x10c975430 --> 100
ref[T]
T型をnewするための型
メモリを確保する
参照されなくなったらGCされる
code:nim
var
num_ref: ref int
proc ref_test(num: ref int) =
echo repr(num)
num_ref = new int
num_ref[] = 100
ref_test(num_ref) # ref 0x10ba71048 --> 100
参考