Pointer既然是无类型指针,那么就不能new了,因为编译器不知道该给它分配多大的内存。
这个道理与C中的void *一样。

解决方案 »

  1.   

    什么值都可以取,但不能直接赋值var p:pointer;
    begin
      //new(p);
      GetMem(p, length('abc'));
      //p^:='abc';//这里出错!
      move('abc', p^, length('abc')); //这样赋值, 取值时用强制转换
      FreeMem(p);
    end;type
      tagMy = record
        a1: integer;
        a2: char;
        a3: double;
        //........
      end;//也可以赋结构体值
    var p:pointer;
        tag: tagMy;
    begin
      //结构赋值
      tag.a1 := ...
      //再将结构赋给p
      GetMem(p, sizeof(tag));
      move(tag, p^, sizeof(tag));
      FreeMem(p);
    end;
      

  2.   

    sorry,应改用FreeMem(p, sizeof(...));释放
      

  3.   

    var p:pointer;
    begin
      getmem(p,4);
      p^:=234234;//这里出错!
      freemem(p);
    end;改了,可是还是出错的啊!