type
TMyObj = class
public
procedure SayHello;
end;
SayHello实现如下:
procedure TMyObj.SayHello;
begin
showmessage('');
end;
下面的代码会不会引发错误,请说明原因:
var MyObj: TMyObj;
begin
MyObj := TMyObj.Create;
MyObj.Free;
MyObj.SayHello;
end;
TMyObj = class
public
procedure SayHello;
end;
SayHello实现如下:
procedure TMyObj.SayHello;
begin
showmessage('');
end;
下面的代码会不会引发错误,请说明原因:
var MyObj: TMyObj;
begin
MyObj := TMyObj.Create;
MyObj.Free;
MyObj.SayHello;
end;
解决方案 »
- 关于调试的问题2
- 好雷的名字
- 谁有 office2007 图标集 32x32 (*.ico/png)格式的 ?
- 请问怎么把一个做好的Form放到另一个Form上???
- 小弟有个问题不明白,郁闷了好久.请老兄们帮我解释解释
- 用WISE发布软件问题?再线等待!!!
- 程序中adoconnection连接的sql数据库改变后如何打开程序?
- QQ群:“潍坊程序员俱乐部”:5778839;欢迎高手加入。
- 我想统计dbgrid中某一列的所有值的和该用什么函数????怎么写????高分请教
- 奇怪,用SQL查询统计后状态栏上怎么不显示记录数了呢?原来是好的,哪位大虾有空来看看。谢绝麻风瘦大虾入内(不然你又说我不看书,呵呵呵呵)。本人长期在线,先解决先拿分。
- 在动态库中使用IdTCPClient与IdTCPServer通讯的问题。
- 如何在把IDTcpClient接收文件封装在DLL中??????
MyObj.SayHello;
MyObj.Free;
首先你是创建一个TMyObj类,
你要调用他的方法,必须是存在这个对象,你先Free了,调用方法的时候肯定会报内存访问出错的
但是你这样做是有问题windows的内存是按页刷新的
就是这个内存页用完了才会被清除,供其它的对象使用MyObj.Free其实并没有真正的把对象释放,只是把那块内存标记为已不在使用了
他所在的内存页还没被清除,就说这个对象指向的地址还存在这个对象
他的方法仍然可以调用
type
TMyObj = class
public
procedure s;
end;
……………………华丽的分割线……………………
procedure TMyObj.s;
begin
end;
将s在以下代码中调用
var
MyObj:TMyObj;
begin
MyObj.s;
end;