har*_*ald 6 memory-management forth
我一直试图阅读这个,但我找不到任何提及它.
根据标准,创建的字符串S"无法修改,并且从Gforth的简单实验中可以明显看出字符串的空间不是来自字典或填充区域:
hex
here . 7F48AB3B8758 ok
pad . 7F48AB3B8808 ok
s" test" .s <2> 77FDD0 4 ok
Run Code Online (Sandbox Code Playgroud)
我可以期待该地址有效多长时间?
换句话说,如果我将这个地址(和计数)存储在一个变量中,我可以稍后在程序中再参考它,还是需要将它移动到字典或堆中的单独位置?如果我不存储地址,我会泄漏内存吗?
编译成定义时,字符串的生命周期是定义的生命周期.s"通常仅在编译时使用.
并非所有Forths都允许使用解释时间s",实际上ANS说,"这个词的解释语义是不确定的." 行为将至少特定于您的特定Forth.
您似乎正在使用Gforth,恰好有至少一个解释时字符串的保留空间.Gforth手册说,"......字符串只存在下一次调用之前s"".它继续说,"有些Forth系统保留了不止一个这样的字符串,但通常它们的寿命有限." (第3.24节字符和字符串).
我希望有所帮助!
| 归档时间: |
|
| 查看次数: |
589 次 |
| 最近记录: |