你的分析是对的ss:=s;
原来的ss的的地址就没法访问了,但程序在关闭时系统会释放那一块内存的。
后面的 s.Free; 是没有必要的。

解决方案 »

  1.   

    提示:
    delphi中对于对象是通过引用来进行操作的,
    有些象java中对对象的处理,
    ss := s;后实际上ss和s是指向同一个实列,
    ss.free后实际上这一实列已经被释放掉了,
    再次s.free就会引起内存出错
      

  2.   

    为什么第一次s.free不会出错,非要第二次运行才出错呢?
      

  3.   

    largewang(老王) 正是我想说的!S其实可以简单看作一个Pointer,Free之后释放资源了!
    但是s还是指向该地址的指针(虽然该地址空间资源已被系统收回)
    这个时候,你仍然调用该方法就会产生不确定的执行效果。或者有可能
    导致更严重的后果,但也有可能什么都没有。
      

  4.   

    对不起,菜鸟看到这里又有问题了,我刚开始学delphi6为什么我在写程序的时候用了//注释,程序在编译时会出错呢??我删除//以后就没事,不知是不是在程序中不能用//写注释????
      

  5.   

    就给点提示吧,先谢谢各位的帮忙了,
    [email protected]