- ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:VBA 停止したら配列は開放されていますか?)
VBAでの配列の開放について
このQ&Aのポイント
- VBAを停止した時、配列のメモリは開放されているのか疑問です。エクセルファイルの処理で大きな配列を使用しているため、配列を繰り返し使用していますが、VBAを停止すると配列のメモリは開放されるのでしょうか。
- エクセルの動作が重くなるため、配列のメモリが開放されていない可能性があります。VBA起動直後に配列のメモリを確認して開放する方法があれば教えてください。また、空の配列をチェックするコードを試しましたが、実行時エラーが発生しました。
- 配列のメモリが開放されているかどうか疑問です。エクセルファイルの処理で大きな配列を使用しており、VBAを停止すると配列のメモリは開放されるのか不明です。エクセルの動作が重くなることがあり、配列のメモリが開放されていない可能性があるため、VBA起動直後に配列のメモリを確認して開放する方法を教えてください。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
一応、仕様としては、変数等で確保されたメモリーは、その実体への参照が無くなった時点で開放されることに、なっています。 おそらく、実際には、参照が無くなり、Excelのシステムがガベージコレクションを行う機会があった時に開放されるだと思われます。 さて、仕様ではこうなっていて、大概、このように動いているわけですが・・・デバッガーによるプログラムのブレークは、かなり特殊な状態です。 多分、メモリーがリークしていると思われます。 デバッグ中のプログラムを終了させた時点で、そのメモリーへのアクセスの手段は完全に失われていますので、これをイレースすることも当然出来ないですね。 多分、Excelの再起動が、もっとも現実的な処理だと思います。これなら、確実にメモリーは解放されます。普通の運用状態では起こりえない状態ですから、これをエラー処理の一環として組み込むというのは、ちょっと非現実的かなと思います。
お礼
mitoneko様 どうもありがとうございます。 なるほどです。という事は今の認識でもそれほど間違っていなさそうですね。 分かりやすいご説明をいただけて勉強になりました。 この度はご親切にお教えいただき誠にありがとうございました。m(_ _)m