2

我正在尝试将数据附加到blockRed/System。

Red []

my-red-block: ["some text"] ; some already existen data in block

foo: routine [
    blk
]
[
    block/rs-append as red-block! blk as red-value! unicode/load-utf8 "new text" size? "new text"
]

foo my-red-block

print my-red-block

我决定通过block结束routine在那里修改它。

我收到错误:

*** Runtime Error 1: access violation
*** at: 630EB4DFh
4

1 回答 1

4

这样做的原因是因为load-utf8返回node!引用外部字符串缓冲区的 a,而不是string!值本身。

node!本质上是一个指针,它与高级 Red 值的结构不匹配;然而,由于它是一个指针,它可以被转换为另一种类型的指针,例如 egred-value!或任何其他结构。当您尝试访问该格式错误的值槽时,就会发生崩溃。

至于原来的问题,应该回答它。

于 2020-06-16T15:52:28.753 回答