|
|
1
1
我认为你有理由感到困惑。我认为在第一个节目中
格伦·里德可能打算举三个例子,但不知何故,其中两个被挤在了一起。看看函数
具有
这仍然有效!可以说是“使用存储堆栈”[*]。唯一的问题是局部变量具有全局可见性[**]。 谢谢你的提问!读了这个问题后,我顿悟到这是可能的。
[*]具体执行
[**]但奇怪的是,这似乎不是
真实的
问题,因为变量的生命周期有限。即使名字
|
|
|
2
1
实际上,“开始”使字典操作数成为字典堆栈上的当前字典。最后要做的就是从堆栈中删除字典。 因此,“end”不会检查(例如)字典堆栈中是否还有任何字典包含您刚刚调用end的字典。它也不会检查操作数堆栈,以查看字典是否从那里引用。等等等等。 这意味着“end”不能决定字典不再被引用,因此它不能丢弃正在使用的内存。 所以这两种操作都不会恢复任何内存。PostScript使用垃圾收集内存模型,因此无法判断何时恢复内存。但是,“保存”会按“原样”保存当前内存,“还原”会将内存恢复到该点。因此,无论在保存和恢复之间发生什么,恢复后的内存都将与保存时完全相同。这是唯一能真正确定的方法。 语言中没有定义垃圾收集器和保存/恢复的精确操作,只要它在执行操作符时的行为符合描述就足够了。 我在PostScript中看到了以多种不同方式实现的内存处理,存储和恢复的具体操作有很大不同。然而,它们通常不是很“重”,因为本质上你只是在内存中做了一个保存标记,然后当你进行恢复时,把这一点之后的所有东西都扔掉。 另一方面,vmreclain通常调用标记/扫描操作来检查VM中分配的所有对象,看看它们是否仍然被引用,如果没有,则丢弃它们。 因此,您可以(通常)用VMRecall代替保存/恢复。效果大致相同,但需要更长的时间才能执行。 |
|
|
FlyingTeller AEgo · PS文本上色的简易方法 9 年前 |
|
Tomas · postscript设备的默认字体大小 11 年前 |
|
|
user645280 · 使用stdin的简单Postscript命令失败 12 年前 |
|
|
tsm · 串联和四向上Postscript文件 13 年前 |
|
|
Haider · 在PostScript中添加表单 14 年前 |