Что происходит в FreePascal, если поле F класса C назначено указателю P после того, как P установлен на ноль?
Цель состоит в том, чтобы добавить список ребер в граф, используя экземпляры 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 = Nil
- F ^ [0] = 2 или
- что-то другое?
1 ответ
Решение
P - указатель на класс, выделенный для кучи. OF присваивается то же значение, что и P.
Установка P в ноль не влияет на выделенный объект кучи.
OF все еще указывает на этот объект, и F[0]^ равен 2.