跳至内容

Ada 编程/属性/'简单存储池

来自维基教科书,开放的书籍,面向开放的世界

对于每个非形式、非派生的指向对象的访问类型 Acc,表示属性 Simple_Storage_Pool 可以通过属性定义子句(或通过指定等效方面)来指定。

My_Pool : My_Simple_Storage_Pool_Type;

type Acc is access My_Data_Type;

for Acc'Simple_Storage_Pool use My_Pool;

在属性定义子句中为 Simple_Storage_Pool 属性给出的名称应表示一个“简单存储池类型”的变量(请参见 pragma)。

此属性的使用仅允许用于表示为其指定了此属性的类型的名前缀。属性的类型是指定为访问类型的简单存储池的变量的类型,并且该属性表示该变量。

为同一个访问类型同时指定 Storage_PoolSimple_Storage_Pool 是非法的。

如果已为访问类型指定了 Simple_Storage_Pool 属性,则将 Storage_Pool 属性应用于该类型时会发出警告,并且其计算将引发异常 Program_Error

如果已为访问类型 S 指定了 Simple_Storage_Pool 属性,则计算属性 S'Storage_Size 将返回调用 Storage_Size (S'Simple_Storage_Pool) 的结果,这旨在指示为简单存储池保留的存储元素数量。如果未为简单存储池类型定义 Storage_Size 函数,则此属性将返回零。

如果访问类型 S 具有指定为类型 SSP 的简单存储池,则计算该访问类型的分配器将调用类型 SSP 的基本 Allocate 过程,将 S'Simple_Storage_Pool 作为池参数传递。此类分配器的详细语义与 Ada 参考手册第 13.11 节中为分配器定义的语义相同,只是将术语“简单存储池”替换为“存储池”。

如果访问类型 S 具有指定为类型 SSP 的简单存储池,则对该访问类型的 Ada.Unchecked_Deallocation 实例的调用将调用类型 SSP 的基本 Deallocate 过程,将 S'Simple_Storage_Pool 作为池参数传递。此类未检查的释放的详细语义与 Ada 参考手册第 13.11.2 节中定义的语义相同,只是将术语“简单存储池”替换为“存储池”。

华夏公益教科书