Q&A

  • 이상한 현상..
다음 코드가 에러가 발생하는 이유를 모르겠네요..
Freemem 하는 상황에서 발생하네요.

procedure TForm1.Button1Click(Sender: TObject);
var
  pS1: pChar;
  tmpstr: string;
begin
  tmpstr := 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmn1234567890가나다라마바사아자차카타파하헤가'#13#10;
  GetMem(pS1,Length(tmpstr));

  ZeroMemory(pS1,Length(tmpstr));

  try
    StrPCopy(pS1, tmpstr);
  finally
    FreeMem(pS1);
  end;
end;

tmpstr 변수에서 젤 뒤에 있는 '가'를 않집어넣고 하면 에러가 않나네요.. ㅡㅡ;;

무슨 이유일까요??
1  COMMENTS
  • Profile
    이광철 2003.07.02 01:00

    tmpstr을 저장하는데 사용되는 pS1의 메모리를 할당할때 tmpstr의 길이 + 1로하면 됩니다.
    GetMem(pS1,Length(tmpstr)+1);
    마지막 1byte는 pChar 변수 type에서 문자열이 종료되었음을 표시하는데 사용됩니다... 값은 #$0;