Pointers 如果在P设置为nil后,类C的字段F被分配给指针P,在FreePascal中会发生什么?

Pointers 如果在P设置为nil后,类C的字段F被分配给指针P,在FreePascal中会发生什么?,pointers,pascal,freepascal,fpc,pass-by-reference,Pointers,Pascal,Freepascal,Fpc,Pass By Reference,目标是使用TList实例将边列表添加到图形中。TList是FreePascal中的标准列表类,具有迭代器接口和其他功能 以下是我在FreePascal代码中的想法: PROGRAM PassPointerToClass; TYPE class C // ... public F : TList; end; // end of class definition VAR P : TList; i : integer; BEGIN O := C.Create;

目标是使用TList实例将边列表添加到图形中。TList是FreePascal中的标准列表类,具有迭代器接口和其他功能

以下是我在FreePascal代码中的想法:

PROGRAM PassPointerToClass;
TYPE
  class C
  // ...
  public
    F : TList;
  end; // end of class definition

VAR
  P : TList;
  i : integer;

BEGIN
  O := C.Create;
  i := 2;
  P := TList.Create;
  P.Add(@i);
  O.F := P;
  P := Nil;
END.

  • F=零
  • F^[0]=2,或
  • 还有别的吗

  • p是指向堆分配类的指针。 O.F的值与P的值相同

    将p设置为nil不会影响分配的堆对象

    O.F仍然指向此对象,且F[0]^为2