Create 中异常(100分)

  • 主题发起人 主题发起人 golden_future
  • 开始时间 开始时间
G

golden_future

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