用new生成的窗体,用unload能够完全释放内存吗?是不是一定要set nothing

解决方案 »

  1.   

    set 窗体名 = nothing
      

  2.   

    每个都写上set nothing不就完了
      

  3.   

    unload:释放窗体句柄
    set ... = Nothing:释放对象如果你在窗体上没有正确释放某些资源,那么就达不到完全释放的目的。
      

  4.   

    怎么给每个都写上每个窗体都写上set nothing
      

  5.   

    内存使用是先按一定的块大小分配给程序的堆栈,然后在堆栈上在进行变量(包括对象)的分配,所以少数小对象的分配/释放是不影响内存使用数的(堆栈的总容量不变)。
    下面的代码可以影响到内存使用数:
    Option Explicit
    Dim a() As VariantPrivate Sub Command1_Click()
        ReDim a(&H10000 - 1)
    End SubPrivate Sub Command2_Click()
        Erase a
    End Sub
      

  6.   

    unload窗体后,加上一句:End 就搞定了
      

  7.   

    当窗体结束后
    加个"END"          '这样会释放所有在这个窗体中出现的对象.
    set obj=nothing   '释放对象占用的内存地址
    unload obj        '我不知道这会不会释放对象占用的内存地址?但我可能肯定的是有时候,在一些特定的场合,窗体会无故停留在进程内,但我能确定窗体内的事件代码都已完全执行完毕!?后来没办法只有用END
      

  8.   

    用 END 进行释放是 Visual Basic 中最最误人子弟的。
    最早的 Basic 程序运行于 DOS 之类的单任务操作系统上,END 语句等于结束程序退回到操作系统。
    在 DOS 下,所有外部资源都通过中断进行访问,根本不存在缓冲区或句柄控制,只要没有进行中断挂钩,程序结束就等于完整地释放了。
    因此在某些“专假”地教授下,END就成了万能法宝了。外部环境不同了,要避免用 END。
    如果仅仅是数据库事务未结束,那么用 END 最多是本次事务被回滚。但是如果正在进行文件操作,END 可能会导致文件数据不一致导致无法使用。
    程序不能结束,只能是程序编得不好。