【问题标题】:(ROBOGUIDE) Fanuc Karel Stack Overflow error(ROBOGUIDE) 发那科 Karel 堆栈溢出错误
【发布时间】:2020-07-17 07:51:41
【问题描述】:

在 roboguide 中运行 karel 程序时会发生堆栈溢出错误,即使没有递归。 roboguide没有提供其他信息。

【问题讨论】:

    标签: karel


    【解决方案1】:

    查看 Karel 手册的“堆栈使用”部分

    执行程序时,除非您指定堆栈大小,否则会分配 300 个字的堆栈。这 堆栈是从可用的用户 RAM 分配的。 堆栈使用量可以计算如下: • 每个调用(或函数引用)至少使用五个堆栈字。 • 此外,对于例程中的每个参数和局部变量,堆栈上的额外空间是 使用,取决于变量或参数类型,如

    首先尝试增加程序的堆栈大小(在 PROGRAM 关键字下添加)

    %STACKSIZE = 4000

    其次,正如手册所述,堆栈大小包括所有参数(手册中有一个表格指定了每种数据类型的大小)。就我而言,罪魁祸首是我大量使用了字符串变量声明

    VAR
       msg:STRING[200]
       even_worse:ARRAY[10] OF STRING[200]
    

    字符串参数可以快速加起来,尤其是字符串数组。确保您只声明您需要的内容,或者如果不是严格需要,最好不要使用局部变量。在 Fanuc 的 Karel 中,堆栈空间很紧,让一切都变得重要。

    【讨论】:

      猜你喜欢
      • 2014-01-26
      • 2019-02-16
      • 2011-09-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多