我在DLL子窗口中动态创建WEBBROWSER控件。用Navigate打开本地文件(打开方式:Navigate(本地文件绝对路径)),在DLL子窗口关闭时内存报错。将Navigate注释掉就OK。请各位FW帮忙。
注意问题:
1.在本地路径前加 file:///后无效
2.用fastmm检测没有发现内存泄漏
3.单步跟踪窗口close事件,事件中的语句没有错。
4.若不动态创建webbrowser。关闭时不出错,但是其他先于这个子窗口打开的dll子窗口关闭时报错,报错地址相同(不能读某个地址)。
自己考虑:
1.可能还是某个地方又读取了已经释放的内存或是释放不彻底,可是不知道怎么去查找。
2.对Navigate属性我解不深。
3.webbrowser版本与当前ie版本不同造成的(工具:d2007,系统:win2000)?

解决方案 »

  1.   

    我也有这个问题,后来在dll中把CoUninitialize()和delete form注释掉了,就OK了结果我又遇到另一问题:生成dll时,不选中build  with  runtime  packages,就无法正常运行,而如果选择了,就必须打包bpl。不知道LZ有这个问题吗?
      

  2.   

    动态创建,出问题的可能性极大。webbrowser动态创建一般都会有bug,这是控件本身原因。特别是你动态创建时没有指定父句柄,也就是TWebbrowser.Create(nil)这种方式,不可预知的问题会更多!
      

  3.   

    樓主關閉窗口前是不是多次:Navigate(本地文件绝对路径)