请问:用Pchar Lpctstr Pansichar 一定要进行内存分配吗?
如:
var ss:Pchar;
1.   ss:=Pchar('sss');
     没有释放内存可以吗?
2.   ss:=StrAlloc(3);
     if Assigned(ss) then  StrDispose(ss);Lpctstr ,Pansichar 同上.

解决方案 »

  1.   

    var ss:Pchar;
    1.   ss:=Pchar('sss');
         没有释放内存可以吗? // 这里应该只是引用,并没有分配内存(不确定的说)  
    2.   ss:=StrAlloc(3);
         if Assigned(ss) then  StrDispose(ss);
      

  2.   

    补充:
    ss:=StrAlloc(3);
    if Assigned(ss) then 
    begin
     ss:=nil;   //行吗?
     StrDispose(ss);
    end;
      

  3.   

    应该是这样:
     StrDispose(ss);
     ss:=nil;   //行吗?先释放,再置为nil.
      

  4.   

    不确定,如果非要释放不可,可以:
    var ss:^Pchar;
    begin
      new(ss);
      ss^:='sss';
      dispose(ss);
    end;
      

  5.   

    to: renzhm(戴尔飞)
    pchar 不就是指针.
    ^P 是什么类型?补充:
    我调用的是DLL
      

  6.   

    var ss:Pchar;
    1.   ss:=Pchar('sss');
         没有释放内存可以吗?//只是让ss指向一个已经存在的串 'sss',不能进行释放
    2.   ss:=StrAlloc(3);
         if Assigned(ss) then  StrDispose(ss);//正确。
    ==============
    pchar 不就是指针.
    ^P 是什么类型?
    你先找找程序中对P的定义,看看P是什么,^P就是指向 P 的指针类型。