我试图创建一个泛型方法来从对象获取对象的所有引用。
例如:
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。
谢谢你,