是否可以在没有"分配"的情况下使用字典内存?



我正在做一个编程练习,我试图以不同的方式做同样的事情。 (我碰巧在 Forth 中将两个 3 元素向量一起添加(。在我的一个修订版中,我使用返回堆栈来存储临时值(所以我正在使用该功能(,但除此之外,我还考虑使用未分配的内存作为临时存储。

我创建了两个词来访问此内存:

: front! here + ! ;
: front@ here + @ ;

我在实验中尝试了它,它似乎对我正在做的事情有效。在我的例行程序完成后,我无意使用这种记忆。我生活在字典中,其中的记忆已经被赋予了该程序。

但是,我的直觉仍然告诉我,这是一件坏事。这是一件坏事吗?

如果这很重要,我正在使用Gforth。

严格来说,语言律师,没有。 ANS Forth 3.3.3.2指出:

程序可以在连续分配的区域内执行地址算术。

您正在任何分配区域之外执行地址算术。

但是,在某些特定的实现中,它可能完全没问题。 比如格福斯。

请注意,有一个名为 PAD 的单词,它返回临时内存区域的地址。

如果你

知道自己在做什么也没关系,bud PAD是一个比这里更好的地方。还有另一种选择分配和免费:

ASSIGN ( u -- a-addr ior (

分配连续数据空间的 u 地址单位。数据空间 指针不受此操作的影响。初始内容 分配的空间未定义。

如果分配成功,则 a-addr 是对齐的起始地址 分配的空间和 IOR 为零。

如果操作失败,则 a-addr 不表示有效的地址,并且 IOR 是实现定义的 I/O 结果代码。

免费 ( a-addr -- ior (

将 a-addr 指示的数据空间的连续区域返回到 系统供以后分配。A-addr 应指明数据区域 以前通过分配或调整大小获得的空间。这 数据空间指针不受此操作的影响。

如果操作成功,则 ior 为零。如果操作失败,则 ior 为 实现定义的 I/O 结果代码。美国信息系统国家标准

: 前面! 这里 + ! ;

什么是堆栈图?我猜( n offset_in_cells -- (?

相关内容

  • 没有找到相关文章

最新更新