在 Swi-prolog 中增加运行时的堆栈大小

Posted

技术标签:

【中文标题】在 Swi-prolog 中增加运行时的堆栈大小【英文标题】:Increase stack size in runtime in Swi-prolog 【发布时间】:2021-04-02 18:24:20 【问题描述】:

我在我的代码中使用了set_prolog_flag(stack_limit, 5000000000).

然后我得到以下错误:

ERROR: No permission to modify static procedure "set_prolog_flag/2"

我好像没有权限修改stack_size。有解决办法吗?

【问题讨论】:

也许这会有所帮助:swi-prolog.org/FAQ/StackSizes.html 看来您已将其添加为事实。您需要将此作为目标发出,例如,在顶层或作为指令。 【参考方案1】:

Emolai,您查阅的信息似乎已过时。 您需要以这种方式设置堆栈限制:

:- set_prolog_stack(stack, limit(5000000000))。

看到冒号+减号了吗?这表示目标 set_prolog_stack/2 将被执行,而不是定义新的子句 set_prolog_stack/2。这解释了您遇到的错误。

您现在可以出发了。你的问题解决了吗?

【讨论】:

谢谢,我通过阅读@false 的评论实际上解决了这个问题。也感谢您的宝贵时间:)

以上是关于在 Swi-prolog 中增加运行时的堆栈大小的主要内容,如果未能解决你的问题,请参考以下文章

在 C++ 中增加堆栈大小

应用程序执行期间跟踪堆栈大小

在 python 2.7 中增加递归限制和堆栈大小

在QT中增加堆栈大小

增加堆栈保留大小并不能防止堆栈溢出

增加浏览器中的堆栈大小