1、类的成员函数并不需要Create来分配资源,对象不必创建就可以使用函数;成员函数不属于某个对象,而属于类
2、对象声明时初始化为nil,Free后只是释放了资源,并没有把nil赋给对象,所以我们常在对象Free后,把nil赋给它
3、必须C.Free,c:=nil
4、C1、C2指向同一个地址,不过这涉及到引用计数,你可以做个试验看看C2所引用的内容有没存在
2、对象声明时初始化为nil,Free后只是释放了资源,并没有把nil赋给对象,所以我们常在对象Free后,把nil赋给它
3、必须C.Free,c:=nil
4、C1、C2指向同一个地址,不过这涉及到引用计数,你可以做个试验看看C2所引用的内容有没存在
2、free掉的是分配的内存空间,但c是指针变量,仍指向那块内存空间
3、不会释放实例,只是把指针移走了;这样做c原来指向的实例就游离了
4、是指针指向一个地址了(c1),c2原来指向的实例游离了;c1c2指向的对象是同一个,当然free了
TC=Class
public
a: Integer;
Procedure AA;
end;procedure TC.AA;
begin
ShowMEssage(IntTOStr(a));
end;
这时就不可以了。
2、当C.Free时,它所占的内存地址释放了,但C它表示的是个地址的值,是不会变的。你可以调用FreeAndNil(C)将C置为NIL。
3、C:=NIL,不会释放内存的,会产生内存泄露。需要用FreeAndNil(C)
4、两个指向同一个地址了。C1 Free了以后,C1和C2共同指向的那块内存地址就释放了,但这并不是指C1和C2的值等于nil了。
保罗回答得更好,呵呵