我用的 Delphi 5 的Update Pack1,在win2000下。

解决方案 »

  1.   

    你的!
    太明显了。p := PChar( s );改变了p的值。
    应该是
    MoveMemory(P, Pointer(s), Length(s) + 1);
      

  2.   

    procedure TForm1.Button1Click(Sender: TObject);
    var
      p: PChar;
      s: string;
    begin
      s := 'Hello win2000';  GetMem(p, 2048);
      try
        StrPCopy(P, S); //安全
    //    p := PChar( s ); //首指针已经改变
        ShowMessage( string( p ) );
      finally
        FreeMem( p );  // 这句有问题???
      end;
    end;
      

  3.   

    p := PChar( s ); //已改变P指针
    freeMem(P) 出错!