怎么没有人说话呢?虽然我也不知道,但是我可以顶一顶delphi中create失败我没有看到过,或者说我只看到过系统资源不足的时候有canvas无法画的错误。
解决方案 »
- delphi 怎样读取和修改 RES文件
- 如何编写锁定驱动器的程序?如果输入的密码是WINDOWS用户登录密码则允许进入
- 【求助!】ServerSocket.Socket问题!在线等!
- 如何显示数据库中的图片(比如Access)
- 大虾们,请问如何实现statusbar中的字能够滚动?
- 分不是问题,望高手详解
- 很简单,SHOWMODAL问题。进来都有分。onlin waiting....e
- 一个小问题,关于回车键盘在dbgrid中的问题!
- 谁有DELPHI源码整理的软件啊?
- 如何处理 ActiveForm 在IE中花屏问题
- delphi+asp+sql在上海找工作怎么样?
- 当form1调用form2时,如何能保证焦点只在form2中(除非form2关闭),即form2只能在最前
delphi是没有问题的
Tmyclass=class
a:string;
b:Tmyclass;
end;
myobject:Tmyclass;
try
myobject:=Tmyclass.create;
myobject.a:=a string;
myobject.b:=nil
except
messagebox(form1.handle,'show error','error',mb_ok);
end;
当程序运行一段时间(不定时)后,这段语句回产生异常。
那位能告诉我原因及解决方法。我建立一个单链表类,然后不断执行添加与删除,用2000的资源管理器没发现是用内存猛上涨,我想知道delphi 的构造器是怎么分配内存的。
myobject.b:=nil
是不是
myobject.b:=tmyclass.create ?create如果出现错误,默认delphi会调用free释放类
并且不提供错误信息
1.如果在Create里面发生了异常,那么这个对象是不会被建立的。2.对象应该是在一个进程的全局堆里分配的,并不是每个对象都用一个
堆;
================================================================曾经有一碗热辣辣的烧猪手面放在我面前,我没有珍惜,等到晾凉了之后才后悔莫及。
to Jerry529(在猪的海洋里遨游)
我的意思是delphi的构造器是不是为每个类创建一个堆,然后这个类的所有实例都从这个堆中分配内存。如果所有的类对象都从默认的进程堆中分配内存的话,根据堆的保护机制,那多线程对内存的访问效率岂不是大大降低了。要这样,自己想创建一个堆,然后从这个堆中分配内存的话,应该怎么实现呢?
delphi总是先构造派生类,后构造基类。
NewInstance方法可以被覆盖,所改变delphi为对象分配内存的方式
---《delphi技术手册》中如是说。我也不太懂这些
myobject:=Tmyclass.create没有指定owner,后来也没有调用析构器,这个对象怎么销毁?
我的代码刚开始在我机子上也可以运行,大概过一段时间后才会出现这种异常,也就是说,相当于考机一段时间后才出现的,我不知道该怎么解决,不允许结束程序,也不能跳过这一段代码。