var
  P: PInteger;new(P);
// do...
dispose(P);

解决方案 »

  1.   

    procedure Dispose(var P: Pointer);
      

  2.   

    我new了很多次,一个dispose是不是就能释放所有这指针占的内存?
      

  3.   

    为和要new多次呢
    new一次 
    就dispose一次吗
      

  4.   

    New一次,Dispose一次。否则不会释放。
      

  5.   

    var
      P1, P2: PInteger;new(P1);
    new(P2);
    // do...
    dispose(P1);
    dispose(P2);你是这样做的就可以
    如果是这样
    var
      P: PInteger;new(P);
    new(P);
    new(P);
    // do...
    dispose(P);会超成内存泄露
      

  6.   

    我如果对一个TREEVIEW赋值,就需要对每个节点都NEW一个指针,如果不需要TREEVIEW了,就得把指针释放,按楼上说得,会造成内存泄露,那该如何做呢?
      

  7.   

    用一个循环把node全取出来把deta里面的指针全dispose再关程序
      

  8.   

    可以在TReeView的OnDeletion事件中写:
      Dispose(PInteger(Node.Data));