Next: , Previous: R Internal Structures, Up: R Internal Structures



1.1 SEXPs

R 用户所说的 变量对象只是绑定一个值的符号(symbols)而已。 这些值可以认为是 SEXP (一个指针),或者它指向的结构 SEXPREC (向量有另外一种形式,即指向 VECTOR_SEXPREC 结构的 VECSXP)。因此 R 对象的基本构建块常常被称为 节点(nodes),表示 SEXPRECs 或者 VECTOR_SEXPREC

注意,SEXPREC的内在结构不可以被 R 的扩展所访问: SEXP 是一种不透明指针(opaque pointer),并且 内核只可通过提供的函数访问。

两种节点结构的开始三个字段是32位的 sxpinfo 字头(header),随后是三个指针(放在一个双向链表中分布指向属性以及前后节点), 然后是一些其它字段。在32位平台上,一个节点 1占用 28 字节: 在64位平台上,通常是 56个字节(取决于系统的字节对齐限制(alignment constraints))。

头字段的开始5位最多可以指定32个 SEXPTYPE


Footnotes

[1] 严格意义上来说,SEXPREC 节点和 VECTOR_SEXPREC 节点虽然比较小但其后有数据紧跟。