我想弄清楚OCaml的内存呈现。
我所知道的是:
我对他们之间的关系有点不确定,所以请在此确认。
type r1_t = {foo : int;}
type r2_t = {bar : r1_t;}
let _ = let x = 1 in let r1 = {foo = x} in {bar = r1}
在上面的示例中,以下是我的理解:
x
是一个整数{foo = x}
是一个块{foo = x}
内,foo是一个直接值为x的整数(foo不会引用x' s地址){bar = r1}
也是一个块{bar = r1}
内,栏的值是一个指针,它指的是{foo = 1}
的地址我说错了吗?
答案 0 :(得分:3)
OCaml还有一个64位内存模型。
在同一描述中混合使用和指针没有意义。 OCaml中有一些内容,但本身没有指针。它们是一个实现细节。指针的低位未设置;实际上,这就是设置int的低位的原因 - 区别于指针。
否则您的描述对我来说是正确的。
答案 1 :(得分:1)
查看手册(绑定部分)和A beginners guide to OCaml internals。