Ada - 无约束对象的队列数组导致Storage_Error - 如何解决?


生如夏花
2025-03-16 12:21:03 (18小时前)


所以,免责声明,我现在只使用Ada几个星期……我希望有一个noob错误导致这个。

所以(匿名)代码我有……

与Ada.Text_IO;使用Ada.Text_IO;

与阿达….

2 条回复
  1. 0# 记忆只剩空城 | 2019-08-31 10-32



    的定义

    Bounded_Synchronized_Queue





    1. protected type Queue
      (Capacity : Count_Type := Default_Capacity;
      Ceiling : System.Any_Priority := Default_Ceiling)
      with Priority => Ceiling is
      new Queue_Interfaces.Queue

    2. </code>


    看起来GNAT正在尝试为数组大小的所有潜在排列分配大小,从而导致类型非常大的类型。由于这是一种有限的类型,我不确定它是否仍然必须这样做(所以可能是一个错误)。



    您可以通过更改声明来修复它

    判别

    有具体的

    约束





    1. create an array of queues
      Queue_Array : array(ID_Type) of ID_Holder_Queue.Queue
      (Capacity => 16,
      Ceiling => System.PriorityLast);

    2. </code>


    和系统;



    这应该会删除您的存储错误。

    这个

    如果您使用GNAT编译器可能是相关的。


登录 后才能参与评论