b := tbase.create; ß在这里设断点!
b.free;
end;
通过对代码进行跟踪果然在一进入create就马上调用newinstance方法。
[说明:一定要重载它才能跟踪到它,在断点处,观察cpu,从反汇编后的代码中可以发现,是先调用一个_classcreate,然后才调用newinstance]
用同样的方法可以分析出b.free会最终调用到freeinstance;来释放对象。
我想基本上大的问题已经说请了,object pascal为了实现分配堆内存,在你调用构造器的时候:
b := tbase.create;