提高最小堆栈溢出尺寸的Mac Common Lisp的5.0
-
27-09-2019 - |
题
我是比较新的Lisp的(我只知道很基本的)和我目前正试图运行由David创建的算法组成方案和对策。它运行在MCL 5.0,并且我不断收到以下错误:
错误在过程起作用:对值栈堆栈溢出。 要全局增加堆栈空间,增加
*minimum-stack-overflow-size*
有谁知道什么功能,我会用增加堆栈溢出的大小,我将如何计算我的电脑最好的堆栈溢出的大小?我在一个旧的Powerbook运行MCL 512 MB的RAM。
感谢您的时间,
埃迪
解决方案
这似乎是说,你只需要修改特殊变量*minimum-stack-overflow-size*
。当你在REPL(CL-USER>
提示或者类似的),通过评估其名称检查这个变量:
CL-USER> *minimum-stack-overflow-size*
然后,将其设置为一个更大的值(1234567只是一个占位符)与setf
:
CL-USER> (setf *minimum-stack-overflow-size* 1234567)
然而,这可能不是真正的问题。我不知道MCL很好,但它可能需要(declaim (optimize (speed 3) (safety 0)))
或相似,使尾部调用消除,如果程序要运行使用尾递归函数依赖于这样的优化。
其他提示
最初存储器选项用的ResEdit编辑。
人们也可以使用SAVE应用功能,并使用:关键字来指定各种值MEMORY-OPTIONS。这在MCL参考手册中描述。此功能节省了新的MCL的应用程序。通常,一个人开始香草MCL,设置各种选项,加载一些库,然后保存新的应用程序。然后,该新应用程序的开发过程中使用。
在必要的堆栈大小取决于要运行该程序。
如果一个堆栈溢出发生,在MCL您可以继续使用在许多情况下,一个更大的堆栈。只要选择正确的重新启动选项。
不隶属于 StackOverflow