Forth 数组中的连续内存?

Contiguous memory in Forth arrays?

我知道variable test 5 cells allot不能保证分配一个连续的内存块,而create test 1 , 2 , 3 , 4 , 5 ,肯定会创建一个连续的内存块。

variable 定义为 : variable create 0 , ;

allot将更多单元格添加到变量是否不能保证连续扩展内存块,因为 create 每个单词只能调用一次?

示例:

create test 1 , 2 , test 3 , 4 , 5 , <<<< 这不一定会连续扩展数组,对吗?

我的假设是否正确?

  • 标准中的措辞给予VARIABLECREATE将数据放在不同内存区域的自由。如果他们这样做,显然 CREATEALLOT 不能扩展 VARIABLE.

  • 创建的区域
  • CREATE可以从任何单词调用多次。

  • 您的示例可能并不完全符合您的想法。第二行调用 test,将其地址留在堆栈中。然后它放置了三个单元格,这些单元格确实扩展了分配给 test.

  • 的区域
  • 您对 VARIABLE 定义的假设并不适用于所有实现。