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_Pool
和 Simple_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 节中定义的语义相同,只是将术语“简单存储池”替换为“存储池”。