真的吗??那我怎么看到别人在使用指针时都要对其进行释放!!
而且说,指针自己不会自动释放!!必须手动动释放,使用NEW(),用DISPOSE(),用GETMEM()ALLMEM(),使用FREEMEM()。我该怎么班班? :(

解决方案 »

  1.   

    Windows NT下动态的数组之类在程序结束后会自动释放!
      

  2.   

    在Onclose下加一个Action:=caFree也能释放
      

  3.   

    在ListView的OnDeletion事件中释放最简单。
    FreeMem(PChar(Item.Data));
    另,我不认为程序释放的时候会自动释放PChar。毕竟PChar不是Component,没有Owner一说。
      

  4.   

    那么在WIN98下呢?应该不会吧!我说在WIN2000下运行没有问题,在WIN98下一运行就死机!!
    ‘ch81(missile) ’
    快告诉我呀!!!请写的详细写,一定给分的!!!很急的问题!!!
    谢谢了!!!!大家都来说说吗!!!
      

  5.   

    我认为不要释放,因为它会随listview1一起消失。
      

  6.   

    用ListView的Items属性,应该行吧
    For i := 0 to ListView1.Items.Count - 1 do
      FreeMem(PChar(ListView1.Items[i].Data));
      
      
      

  7.   

    那楼上的意思是说,不论在WIN98还是在WIN2000下都不用在程序结束是释放??呵呵,我又看到你了‘chechy(chechy) ’!怎么才知道指针已经释放了呢???
    ‘在ListView的OnDeletion事件中释放最简单。
    FreeMem(PChar(Item.Data));’
    这样的话,WIN98和WIN2000都管用吗??
      

  8.   

    怎样知道指针已经释放,这个问题比较复杂。比较好的习惯时指针释放后,将指针赋值为nil,这样就可以判断了。否则,我确实真不知道一个地址是否有效。FreeMem(PChar(Item.Data));
    另外上述代码好像与平台没有什么关系吧。我这么觉得。
      

  9.   

    看情况而定,如果是Win9x下,最好主动释放占用的内存,win9x的内存管理还有很多的问题。如果是win NT,就不用太担心,程序退出后,与程序相关的所有内存占用立即释放(其实Win9x也是这样的,但Win9x的内存管理问题多,有时不能完全释放)。我建议你主动释放,在删除Item和Form close的地方,把相应占用的内存都释放掉,应该建立一个良好的习惯,用完内存要释放,并把指针赋nil。
      

  10.   

    好的!谢谢’chechy(chechy) ‘了!!!呵呵受分!!另外请帮我看看我的另外的一个问题!
    ’我在LISTVIEW中使用finddata怎么不管用呀!!!请用过的人帮我看看!!‘你应该可以找到的。帮帮忙!!!!我还给分的!!!!