是否有某种方法可以将对象链接到对象? [NO-RTTI]

时间:2016-04-01 13:25:50

标签: delphi garbage-collection

我试图创建一个泛型方法来从对象获取对象的所有引用。

例如:

  TTest2 = class(TObject);
  TTest = class(TObject)
    Test2: TTest2;
  end;

我想创建一个类似的方法:

var
  Local: TTest;
  LinkedObjects: TList;
begin
  Local := TTest.Create;
  LinkedObjects := Local.GetChildren;
  //blah
end;

我想创建一个方法,告诉我在偏移量X上有一个对象的引用。目标是能够在任何类型的字段中列出任何对象,因此,已发布的字段(在对象标题上列出 - vmtFieldTable)不会解决,Rtti(因为它不是每个班级的默认值也不会解决。  如果没有编译器的帮助(提供一些信息),这可能是不可能的,但如果你有一些想法,请告诉我。

我正在研究为Delphi开发GC的可能性。 GC上的所有内容都非常成熟,技术不是问题。但如何获取某些信息会使事情变得复杂。在这一点上,我正在思考一种处理Mark步骤的方法。

一些想法

重载TObject的assign运算符? 它只能在NextGen编译器上实现。 Full answer

浏览所有已分配的内存并在其空间中搜索有效指针? 慢,但有可能吗?初始化并最终确定所有对象的内存清除,然后通过内存查找具有有效对象头的指针?或者我可以在对象上创建奇偶校验位以便于识别吗?

更新:I found an interesting link! Talking about the same problem we discussed here. 我会尝试这样做。

我将一些信息放在一起here

谢谢你,

0 个答案:

没有答案