创建任务分配错误和存储错误的简单示例

create a simple example of tasking error and storage error

我需要一些简单的 Ada 代码来测试我的 "system"。为了测试它,我需要一些引发 存储错误 任务错误 的代码示例(我知道通常会避免它们,但我需要来模拟这个问题)。我知道这似乎是一个基本要求,但我对 ada 编码有点陌生,我发现解决这些任务有点困难。我试图在互联网上搜索合适的解决方案,但所有解决方案都不能满足我的需要(或者太具体或错误)。我正在搜索的是创建一个 .adb 和 function/procedure 引发这两个错误。

我希望您对这两个错误的不同程序感到满意?

对于Storage_Error

procedure Storage is
   procedure Recursive is
   begin
      Recursive;
   end Recursive;
begin
   Recursive;
end Storage;

以及 Tasking_Error

procedure Tasking is
   task T is
      entry E;
   end T;
   task body T is
   begin
      null;
   end;
begin
   delay 0.01;
   T.E;
end Tasking;

这会引发异常,因为当主程序调用 T.E 时,那里根本没有任务。要探索这一点,请将 null; 替换为例如delay 5.0; - 程序在异常终止前等待 5 秒。