Q&A

  • 메모리 관리 문제 (객체 및 레코드)
다음과 같은 코드.

function A: TList;
var
List: TList
P: Pointer;
begin
P := AllocMem(10);
List := TList.Create;
List.Add(P);
  FreeMem(P);
  FreeAndNil(List);
Result := List;
end;
이런코드가 있다면
여기서 FreeMem과 FreeAndNil를 해줘야 하나요-_-안해줘야하나요
또한 어떤 포인터형의 레코드 PB가 있다고한다면
메모리 할당후에 PB^.Field 와 PB.Field 둘다 접근이 가능한데
-_-; 원래라면 PB^가 정답이겠죠?

읽어주셔서 감사합니다.

어렵군요.. 값이 제대로 안나오니..디버깅도 잘안돼고..아아
모든게 다 어려운순간..
1  COMMENTS
  • Profile
    손희석 2003.12.28 03:35
    function A: TList;
    var
    List: TList
    P: Pointer;
    begin
    P := AllocMem(10);
    List := TList.Create;
    List.Add(P);
     FreeMem(P);
    Result := List;
    FreeAndNil(List);
    //또는 List.Free;만해도 되는데...
    end;

    이렇게 해야 합니다.. ^^

    그럼 수고하세요..