Types 如何确定受Ada保护的类型
给定受Ada保护的类型:Types 如何确定受Ada保护的类型,types,ada,protected,Types,Ada,Protected,给定受Ada保护的类型: protected type A is procedure Foo; ... private M : Map; ... end A; 您将如何实现或模拟在以下情况下调用的Finalize过程 保护对象是否已最终确定 基本上,我需要使用受保护类型的私有成员进行一些内部管理(迭代某些映射等)。将参与终结的私有成员包装在一个或多个来自Ada.finalization.Controlled或Limited\u Controlled的记录中。当受
protected type A is
procedure Foo;
...
private
M : Map;
...
end A;
您将如何实现或模拟在以下情况下调用的Finalize过程
保护对象是否已最终确定
基本上,我需要使用受保护类型的私有成员进行一些内部管理(迭代某些映射等)。将参与终结的私有成员包装在一个或多个来自Ada.finalization.Controlled或Limited\u Controlled的记录中。当受保护对象最终确定时,这些私有成员也将相应地最终确定 下面是一个快速有效的(!)示例: 运行此命令,我得到:
C:\sandbox\protected_final
Initialize the Map part as instance 1
Initialize the Map part as instance 2
Clean up the Map stuff for instance 2
Clean up the Map stuff for instance 1
[2011-03-04 08:37:29] process terminated successfully (elapsed time: 00.21s)
“外部”初始化/清除消息来自静态声明的Test_项实例,而内部消息来自动态分配和解除分配的Test_项句柄。当我在linux上通过valgrind运行此消息时,我得到一个“仍然可访问”类型的内存泄漏!“仍然可以访问:1个块中有2104个字节”-有没有想到泄漏可能来自哪里?
C:\sandbox\protected_final
Initialize the Map part as instance 1
Initialize the Map part as instance 2
Clean up the Map stuff for instance 2
Clean up the Map stuff for instance 1
[2011-03-04 08:37:29] process terminated successfully (elapsed time: 00.21s)