求高人指点一下。
TMyClass = class
m_boUse : Boolean;
private
public
end;
引用的时候
MyClass:TMyClass;
if MyClass <> nil then begin
if MyClass.m_boUse then begin //偶尔情况下,这里报内存错误了。
end;
end;
如下类型的错误
Access violation at address 005C364A in module 'dddd.exe'. Read of address 83EC031A
[解决办法]
应该是访问了无效的对象地址,MyClass对象如何创建和销毁的,上完整点的代码。
销毁对象用freeandnil(MyClass),或者判断对象用 if assigned(MyClass) then ...
[解决办法]
if assigned(MyClass) then 用来判断确实比 if MyClass <> nil then效率高 但这不是问题所在
assigned判断对象是否存在 有时是不行的
声明一个全局对象时Delphi会自动将其指向nil,声明一个局部对象时Delphi会将其指向一个随机的地址而不是nil,当销毁一个对象时Delphi不会自动对对象标识符做什么,原来指哪里销毁后还是指哪里。