首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用libgc和小虫?

用libgc和小虫?
EN

Stack Overflow用户
提问于 2014-05-19 21:54:49
回答 2查看 238关注 0票数 1

我听说过几次提到Ada支持垃圾收集--从语言设计的角度来看,它的设计显然考虑到了这一点。

我有一个非实时的应用程序,垃圾收集将非常非常有用。然而,我还没有看到有一个垃圾收集器可以用于我的编译器GNAT。这让我感到惊讶;甚至C也支持垃圾收集,只需链接到libgc。

如果我只是简单地添加libgc到我的链接线,它会工作还是会发生可怕的事情?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-08-17 20:47:34

我在这里发现了libgc绑定作为AdaCL库的一部分:http://adacl.sourceforge.net/

但是,libgc文档还指出libgc无法看到存储在通过system malloc()分配的块中的指针。这意味着,仅存储在从默认内存池分配的对象中的访问不会被视为根用户,并且可能在任何时候失效。这将使标准Ada容器无法存储对可收集对象的访问!这也可能适用于次级堆栈--但我不知道二级堆栈是用于什么的。

然而,我的调查确实表明,垃圾收集是很天真的:

代码语言:javascript
复制
while true loop
  p := new big_thing_t;
end loop;

...runs永远。所以这可能是理论上可行的,但现在我不认为它是安全的。

票数 0
EN

Stack Overflow用户

发布于 2014-05-23 19:08:11

然而,我还没有看到有一个垃圾收集器可以用于我的编译器GNAT。这让我感到惊讶;甚至C也支持垃圾收集,只需链接到libgc。

您可以使用以JVM为目标的蚊虫。

我认为,简单地链接到libgc不会给您垃圾收集(至少据我所知)的原因是因为小虫对如何使用它没有任何概念。然而,考虑到小虫使用GCC后端,我不明白为什么它不应该“只是工作”,如果它是w/ C。

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

https://stackoverflow.com/questions/23747840

复制
相关文章

相似问题

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