0

我试图使用 System.Adress_image 列出程序中分配对象的所有地址。

但是我只能打印我拥有的变量的地址。例如,我有一个堆栈,我可以打印所有堆栈元素的地址。然后我删除指向堆栈节点之一的指针,以便该对象不再在堆栈中。

删除的节点不会自动进行垃圾收集(Ada 2005),所以我想知道该节点的地址。为什么不是程序中所有分配对象的地址?

我怎样才能完成这项任务?

系统包: http: //www.adaic.org/resources/add_content/standards/05aarm/html/AA-13-7.html

僵尸被称为“死物但仍然活着”。

4

2 回答 2

5

两种可能性:

将分配的对象实现为受控类型,并将它们的地址记录为 Initialize、Adjust、Finalize 例程的一部分。

为它们实施自定义存储池,使用自定义分配和解除分配例程来收集您需要的信息。

或者,找到一种方法来使用 Ada.Containers 库来实现您的存储类型,让 IT 担心清理僵尸......

于 2013-04-15T16:37:28.803 回答
2

如果您希望走出 Ada 并寻找内存泄漏,我会推荐valgrind它将在您的程序中找到内存泄漏和其他 gremlins。

于 2013-04-16T07:30:09.380 回答