メモリ解放処理について


とし  2002-03-26 02:09:41  No: 75408

以下のDimの宣言でVariantにした場合、Set fs = Nothingではメモリ解放されないのでしょうか??
Dim fs As VariantのところをDim fs As Objectにしないとだめでしょうか??
教えてください。

(参考プログラム)
Public Sub Test()

    Dim fs As Variant

    Set fs = CreateObject("Exce.Application")
         :    
       (省略)
         :    
    Set fs = Nothing

End Sub


マザー  2002-03-26 19:24:30  No: 75409

fsはObjectとするのが良いと思います。
fs(アプリケーション)の終了には以下手順が良いとかと
If Not fs Is Nothing Then                            
    fs.Quit                               
    Set fs = Nothing 
End If
ApplicationにはQuit
BookにはCloseです。


Tomyankun  2002-04-15 06:57:04  No: 75410

>Set fs = Nothingではメモリ解放されないのでしょうか??
  もしこれで動的に確保した領域が開放されるとすれば、この行以降で
Setステートメントで再度インスタンスを生成することができなくなりま
す。メモリが開放されるのは参照カウントが0で、かつ(この場合は)Test
モジュールを終了した以降になります。
  参考プログラムではExcelのプロセスをQuitしない限りメモリリークす
ることとなります。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加