首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Ada.Containers.Functional_Maps在Ada2012中可用吗?

Ada.Containers.Functional_Maps在Ada2012中可用吗?
EN

Stack Overflow用户
提问于 2021-03-23 14:50:38
回答 3查看 168关注 0票数 2

关于Ada.Containers.Functional_Maps的信息在GNAT文档中是相当深奥的。

首先,它说:

…这些容器仍然可以安全使用。

在第二段中,在我看来,一旦程序退出创建这些对象的上下文,您就无法释放分配给这些对象的内存。我知道你可能会遇到内存泄漏。我说的对吗?

它们也是内存消耗,因为当容器不再被引用时,分配的内存不会被回收。

EN

回答 3

Stack Overflow用户

发布于 2021-03-23 15:01:00

阅读下面两句话:

因此,通常应该在鬼代码和注释中使用它们,以便可以从最终的可执行文件中删除它们。该单元的规格与SPARK 2014兼容。

票数 2
EN

Stack Overflow用户

发布于 2021-03-24 18:35:28

由于Ada.Containers.Functional_Maps规范与SPARK兼容,因此在相关的https://docs.adacore.com/live/wave/spark2014/html/spark2014_ug/en/source/spark_libraries.html上下文中对其进行验证、测试和注释可能会有所帮助。特别地,

票数 1
EN

Stack Overflow用户

发布于 2021-04-06 15:52:43

在我看来,一旦程序退出创建这些对象的上下文,您就无法释放分配给这些对象的内存。我知道你可能会遇到内存泄漏。我说的对吗?

在Ada到管理内存中您可以做一些事情,如果(例如)声明块中的实例的使用没有在该块的退出处被清除,我会感到惊讶。事实上,这就是一些令人惊讶的健壮应用程序在没有“动态分配”内存/值的情况下(实际上是堆分配的,但这是迂腐的)。

这种粒度控制非常好,因为您可以将事物/用法限制到特定的点。结合Ada提供接口的良好功能,这意味着将某些结构更改为另一种结构可能会比其他结构更不痛苦。

作为上面的一个例子,我有一个嵌套的键值映射(一个JSON对象),用于传递参数;这样做的方法发生了变化,因此我输入了一串值(带有公共根键)和一个以JSON作为输入的过程。显然需要的是“键和值到JSON函数,所以在函数中,我使用了多路树容器,其中leafs表示值,内部节点表示键,第二步是遍历树,根据需要创建JSON对象--简单的递归和数据结构选择,用于解决将这些嵌套参数的文本键值对调整为JSON的问题。--而且由于多路树的使用是这个函数的专有,我可以确信,我使用的中间树所使用的内存是在函数退出时释放的。”

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66765583

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档