G golden_future Unregistered / Unconfirmed GUEST, unregistred user! 2003-06-23 #1 1. Create中发生异常时,是否还为实例分配内存,内存分配是在否是在调用Create前发生.如果是的话发生异常时内存如何回收.
T tseug Unregistered / Unconfirmed GUEST, unregistred user! 2003-06-23 #2 1不分配2有析构函数回收 在Delphi中,如果构造函数或者afterconstruction方法中引发了一个异常,那么,它会自动调用这个对象的析构函数。。。所以,如果你的代码只要处理好每一个内存分配调用的就没有问题(在构造函数检测内存分配是否成功,失败时抛出异常;在析构函数中检测每一个nil指针,然后确定是否释放内存)。。。。
1不分配2有析构函数回收 在Delphi中,如果构造函数或者afterconstruction方法中引发了一个异常,那么,它会自动调用这个对象的析构函数。。。所以,如果你的代码只要处理好每一个内存分配调用的就没有问题(在构造函数检测内存分配是否成功,失败时抛出异常;在析构函数中检测每一个nil指针,然后确定是否释放内存)。。。。
T thx1180 Unregistered / Unconfirmed GUEST, unregistred user! 2003-06-23 #3 Delphi在调用构造函数Create前先为实例分配了内存。
T tseug Unregistered / Unconfirmed GUEST, unregistred user! 2003-06-23 #4 楼上说得对,Delphi在调用Create之前分配了实例的内存(NewInstance), 但是如果Create失败(引发异常)那么,它会调用CleanupInstance和FreeInstance来释放的。。。
楼上说得对,Delphi在调用Create之前分配了实例的内存(NewInstance), 但是如果Create失败(引发异常)那么,它会调用CleanupInstance和FreeInstance来释放的。。。
张 张无忌 Unregistered / Unconfirmed GUEST, unregistred user! 2003-06-23 #5 Create异常,DELPHI会自动调用析构函数,不过你写CRATE函数的时候要注意一下能在 异常出以后可以正常的在析构函数里释放资源