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 ,
<<<< 这不一定会连续扩展数组,对吗?
我的假设是否正确?
标准中的措辞给予VARIABLE
和CREATE
将数据放在不同内存区域的自由。如果他们这样做,显然 CREATE
或 ALLOT
不能扩展 VARIABLE
.
创建的区域
CREATE
可以从任何单词调用多次。
您的示例可能并不完全符合您的想法。第二行调用 test
,将其地址留在堆栈中。然后它放置了三个单元格,这些单元格确实扩展了分配给 test
.
的区域
您对 VARIABLE
定义的假设并不适用于所有实现。
我知道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 ,
<<<< 这不一定会连续扩展数组,对吗?
我的假设是否正确?
标准中的措辞给予
VARIABLE
和CREATE
将数据放在不同内存区域的自由。如果他们这样做,显然CREATE
或ALLOT
不能扩展VARIABLE
. 创建的区域
CREATE
可以从任何单词调用多次。您的示例可能并不完全符合您的想法。第二行调用
test
,将其地址留在堆栈中。然后它放置了三个单元格,这些单元格确实扩展了分配给test
. 的区域
您对
VARIABLE
定义的假设并不适用于所有实现。