다음 코드가 에러가 발생하는 이유를 모르겠네요..
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 변수에서 젤 뒤에 있는 '가'를 않집어넣고 하면 에러가 않나네요.. ㅡㅡ;;
무슨 이유일까요??
tmpstr을 저장하는데 사용되는 pS1의 메모리를 할당할때 tmpstr의 길이 + 1로하면 됩니다.
GetMem(pS1,Length(tmpstr)+1);
마지막 1byte는 pChar 변수 type에서 문자열이 종료되었음을 표시하는데 사용됩니다... 값은 #$0;