Q&A

  • 나를 울리는 FreeMem.......
  TSPoint = record
    X: SmallInt;
    Y: SmallInt;
  end;

var
  PTArray: Array of TSPoint;

procedure TForm1.Button1Click(Sender: TObject);
begin
  GetMem(PTArray, SizeOf(TSPoint) * 2);
  SetLength(PTArray, 2);
  PTArray[0].X := 1;
  PTArray[0].Y := 2;
  PTArray[1].X := 3;
  PTArray[1].Y := 4;
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
  FreeMem(PTArray, SizeOf(TSPoint) * 2);
end;


이렇게 실행하면 프로그램이 패닉(^^)에 빠집니다.

class EInvalidPointer with message 'Invalid pointer operation'.......

이런 메시지를 띄우면서

어떻게 Free를 해야하나요?

제발 도와주세요.

패닉룸에서.........
1  COMMENTS
  • Profile
    한영란 2003.04.30 03:39
    사실 제가 C소스를 델파이버전으로 번역하느라
    너무 문구에 매여 이런 불상사를 초래했나봐요.

    GetMem을 모두 지우고 SetLength로 바꾸었습니다.

    정말 감사합니다.