Lazarus 中的 SIGILL 异常

SIGILL Exception in Lazarus

在正常工作一段时间后,我的代码在使用时开始引发 SIGILL 异常。 我不明白文档。 SIGILL 异常在实际热量中意味着什么?

这是引发异常的代码,你能帮我指出原因吗?

function TfrmPascal.valorElemento(lin, col: integer): integer;
begin
     if lin < 0 then valorElemento:= 0 
     else if col < 0 then valorElemento:= 0
     else if (col=0) or (col = lin) then valorElemento:=1
     else valorElemento:= valorElemento(lin-1, col-1) + valorElemento(lin-1, col);
end; 

SIGILL是遇到非法指令时发出的信号。如果您问题中的代码导致 SIGILL ,则表明以下之一:

  1. 您的可执行文件已损坏。
  2. 您的编译器发出了有缺陷的代码。
  3. 您正在尝试执行数据而不是代码。

最后一个选项是最有可能的。如果您注销了数组的末尾、损坏了堆栈等,则可能会发生这种情况。

问题中的代码本身似乎是无害的。几乎可以肯定,您的代码中的缺陷存在于其他地方。