出现 eaccessviolation with message ,出错的地方是 xxx.free;
若是注销xxx.free; 则错误指向end;

解决方案 »

  1.   

    你其他地方可能还要调用xxx,而你把它释放了
      

  2.   

    代码问题,估计xxx已经无法访问了,导致错误
      

  3.   

    可是我注销xxx。free 还是有问题  错误指向end;
      

  4.   

    源码
    xxx:=yyy。creat(self);
    xxx。showmodal;
    xxx。free;
      

  5.   

    确实xxx在其他地方也用 , 我想不让他free   可是还是有错误
      

  6.   

    因为xxx已经被释放了,重新释放会引发AV错误。
    你可以这样更改:
    if xxx <> nil then xxx.free
      

  7.   

    我查了查  这个错误有可能是delphi的bug吗?
      

  8.   

    你的XXX设是局部的还是全局的? 是直接拖进窗口的组件?
      

  9.   

    xxx是一个窗口 里面有些按钮 是用来弹出他的子窗口 
      

  10.   

    create了
    这个错误其实挺奇怪 因为这个程序我一直用都没有出现问题  最近我重新编译了他 所以出现了这个错误
      

  11.   


    这个问题其实很简单,按照SmallHand说的,释放前判断一下
    如果已经是nil,查查是哪里已经free了
      

  12.   

    xxx已经free掉了 
    如果真是这样 是不是 把free 注释掉就成?
      

  13.   


    这个就要你自己判断了,之前的那次free是否是正确的free。
    如果是,那你就注释现在的这句就可以了
      

  14.   

    1不要轻易的怀疑是DELPHI错了,事实证明,大多数错误都是自己造成的,DELPHI用到现在,一般的错误应该是比较少的,特别像你这种错误。
    2把所有调用该窗口的地方写个日志分析下,好久释放,就一目了然了
      

  15.   

    建议用Release,如帮助中所说
    Warning:
    Never explicitly free a component within one of its own event handlers or the event handler of a component it owns or contains. For example, don抰 free a button, or the form that owns the button, in its OnClick event handler.To free a form, call its Release method, which destroys the form and releases the memory allocated for it after all its event handlers and those of the components it contains are through executing.In C++ code, do not use Free to destroy an object. Use the delete keyword.
      

  16.   

    楼主先搜下 xxx.free看看其他地方有没有调用如果调用代码只是如下的话
    xxx:=yyy.creat(self); 
    xxx.showmodal; 
    xxx.free;
    楼主可以看一下是否在XXX中有成员变量需要在XXX析构时释放的,已经在程序里被释放掉了。